Skip to content

Releases: NeuroSkill-com/skill

Skill v0.0.130-rc.4

29 Apr 21:23

Choose a tag to compare

Skill v0.0.130-rc.4 Pre-release
Pre-release

Changelog

Features

  • Minor updates and improvements

Contributors

  • Eugene Hauptmann

Skill v0.0.130-rc.3

29 Apr 21:21

Choose a tag to compare

Skill v0.0.130-rc.3 Pre-release
Pre-release

Changelog

Features

  • fixed issues with the metrics, keychain access (3 -> 1 + on demand), windows CI
  • umap e2e

Contributors

  • Eugene Hauptmann

Skill v0.0.130-rc.2

29 Apr 06:37

Choose a tag to compare

Skill v0.0.130-rc.2 Pre-release
Pre-release

Changelog

Features

  • fix win/linux

Contributors

  • Eugene Hauptmann

Skill v0.0.130-rc.1

29 Apr 05:34

Choose a tag to compare

Skill v0.0.130-rc.1 Pre-release
Pre-release

Changelog

Features

  • Human vs AI activity tracking: every edit and commit is now classified as source: "human" or source: "ai" in real-time. AIActivityTracker watches VSCode commands (Copilot/Codeium completions, inline chat, AI-generated commit messages) to tag subsequent edits/commits, exposes getAIRatioForFile() (rolling 5-minute ratio) for CodeLens + sidebar, and forwards the source field to the daemon for build_events / ai_events storage.

How it works

The AIActivityTracker monitors VSCode command execution to detect AI tool usage:

  • Inline completions (Copilot, Codeium) — edits within 5 seconds after an AI command are tagged source: "ai"
  • Inline chat (inlineChat.start, copilot.interactiveEditor.*) — subsequent edits in the same file are tagged AI
  • Commit messagesgithub.copilot.git.generateCommitMessage marks the next commit as AI-assisted
  • Everything else — classified as source: "human"

What's tracked

Signal Classification
Manual typing human
Copilot inline suggestion accepted ai
Copilot inline chat edits ai
Paste from external source human
AI-generated commit message ai
Manually typed commit message human

Per-file AI ratio

AIActivityTracker.getAIRatioForFile(path) returns a rolling 5-minute ratio (0.0 = all human, 1.0 = all AI) used by:

  • CodeLens annotations (shows "AI-Assisted" vs focus score)
  • Sidebar (Human/AI percentage display)
  • Brain status command (Human/AI split)

Daemon integration

The source field is sent on every edit and git_commit event to the daemon. The daemon stores:

  • AI commits as "git commit (ai-assisted)" in build_events
  • AI commits also as ai_events for analytics weighting
  • Completion acceptances as ai_events with type "suggestion_accepted"

Files

  • src/ai-tracker.ts — Core tracker (new)

  • src/events.ts — Wired to classify edits and commits

  • crates/skill-daemon/src/routes/settings_hooks_activity.rs — Daemon-side storage

  • Focus-aware code review CodeLens: annotations at the top of each file show the developer's focus level when the file was last edited (⚠ Low Focus (42), ℹ Focus: 65/100, 🤖 AI-Assisted (85%), or none for high focus). NeuroSkill: Show Files Needing Review command lists low-focus human-authored files. Toggle via neuroskill.focusCodeLens.

What you see

  • ⚠ Low Focus (42) — Review Recommended — File was edited during low focus. Click to see all files needing review.
  • ℹ Focus: 65/100 — Moderate focus, informational only.
  • 🤖 AI-Assisted (85%) — Most edits were AI-generated, focus score not applicable.
  • No annotation — High focus (>70) or no data yet.

Commands

NeuroSkill: Show Files Needing Review (Cmd+Shift+P)

  • Shows a QuickPick list of files edited during low focus (<50) that were mostly human-authored
  • Sorted by focus score (lowest first)
  • Select a file to open it

How it works

  • FocusCodeLensProvider queries /brain/cognitive-load (grouped by file) every 30 seconds
  • Combines focus data with AIActivityTracker.getAIRatioForFile() to distinguish human vs AI code
  • Files with high AI ratio (>70%) show AI label instead of focus score — AI code doesn't reflect human cognitive state

Settings

neuroskill.focusCodeLens (default: true) — Toggle CodeLens annotations on/off.

Files

  • src/codelens-provider.ts — CodeLens provider (new)

  • Smart Interruption Shield: when /brain/flow-state reports in_flow: true, VS Code's Do Not Disturb mode auto-enables and the status bar shows $(shield) In Flow 12m. NeuroSkill: Toggle Flow Shield cycles Auto / Forced-on / Forced-off. Toggle via neuroskill.flowShield.

How it works

  • When /brain/flow-state reports in_flow: true, the Flow Shield activates
  • Enables VSCode's Do Not Disturb mode (VSCode 1.90+)
  • Shows $(shield) In Flow 12m in the status bar with elapsed time
  • When flow state ends, DND is automatically disabled

Manual override

NeuroSkill: Toggle Flow Shield (Cmd+Shift+P)

Cycles through three modes:

  1. Auto (default) — activates/deactivates based on EEG flow detection
  2. Forced on — always active regardless of flow state
  3. Forced off — never active

Settings

neuroskill.flowShield (default: true) — Enable/disable the flow shield feature.

Files

  • src/flow-shield.ts — Flow shield implementation (new)

  • src/brain.ts — Calls flowShield.update() every 30s

  • Adaptive Break Coach: personalized break timing based on the developer's actual EEG focus cycle (via /brain/break-timing), not generic Pomodoro. Status bar countdown $(clock) Break in 8m, max one notification per cycle, auto-resets when fatigue indicates idleness. NeuroSkill: Take a Break resets the timer manually. Toggle via neuroskill.breakCoach.

How it works

  • Queries /brain/break-timing to learn the developer's natural focus cycle length
  • Shows a countdown in the status bar: $(clock) Break in 8m
  • When the predicted focus drop is imminent (<5 min), the countdown turns visible
  • When the cycle ends, shows $(clock) Break time and optionally notifies

Notifications

  • Max one notification per focus cycle
  • Message: "You've been focused for 47m. Your natural cycle is 42m — take a break?"
  • Buttons: "Take Break" (resets timer) or "Dismiss"

Timer sync

The break coach automatically syncs with the daemon's fatigue data. If continuous_work_mins drops below 5 (indicating the user was idle), the session timer resets — no false break suggestions after returning from lunch.

Commands

NeuroSkill: Take a Break (Cmd+Shift+P) — Manually acknowledge a break and reset the timer.

Settings

neuroskill.breakCoach (default: true) — Enable/disable break coaching.

Files

  • src/break-coach.ts — Break coach implementation (new)

  • src/brain.ts — Calls breakCoach.refresh() and resetSessionIfIdle() every 30s

  • Struggle → AI assist bridge: when /brain/struggle-predict flags a file (EEG focus + undo rate + velocity drop + time-on-file), shows an actionable notification with Open Copilot Chat, Open Terminal, and Step Back buttons. Debounced to one suggestion per file per 10 minutes. Toggle via neuroskill.struggleBridge.

How it works

  • Monitors /brain/struggle-predict (EEG focus + undo rate + velocity drop + time-on-file)
  • When struggling: true, shows an actionable notification:

    "Stuck on auth.ts? (score: 78) Consider breaking the problem into smaller pieces."

Action buttons

Button Action
Open Copilot Chat Opens GitHub Copilot interactive chat (or generic chat panel)
Open Terminal Toggles terminal for CLI debugging
Step Back Dismiss and take a mental break

Debouncing

  • Max one suggestion per file per 10 minutes
  • Prevents notification fatigue while still catching genuine struggles

Settings

neuroskill.struggleBridge (default: true) — Enable/disable struggle detection and AI suggestions.

Files

  • src/struggle-bridge.ts — Struggle bridge implementation (new)

  • src/brain.ts — Calls struggleBridge.check() every 30s (replaces the old generic struggle notification)

  • Personal Flow Triggers dashboard: collapsible "Your Flow Recipe" sidebar section mining 7-day EEG + activity history — best language (/brain/code-eeg), peak hours (/brain/optimal-hours), natural cycle length (/brain/break-timing), top flow killer (/brain/context-cost). Toggle via neuroskill.flowTriggers.

What you see

In the NeuroSkill sidebar panel, a collapsible "Your Flow Recipe" section shows:

  • Best language — "Focus best on Rust (82)" — from /brain/code-eeg
  • Peak hours — "Peak hours: 9:00, 10:00, 14:00" — from /brain/optimal-hours
  • Natural cycle — "Natural cycle: 42m" — from /brain/break-timing
  • Flow killer — "Flow killer: Slack (focus 38 at switch)" — from /brain/context-cost

Data sources

Insight API Endpoint Time Range
Best languages /brain/code-eeg Last 7 days
Peak hours /brain/optimal-hours Last 7 days
Natural cycle /brain/break-timing Last 7 days
Flow killers /brain/context-cost Last 7 days

Settings

neuroskill.flowTriggers (default: true) — Show/hide the flow triggers section in the sidebar.

Files

  • src/sidebar.ts_fetchFlowTriggers() and _renderFlowTriggers() methods

  • Focus-scored git commits in sidebar: collapsible "Recent Commits" section shows the last 8 commits with author marker (👤 human / 🤖 AI) and a color-coded focus badge captured at commit time via /brain/flow-state. AI-assisted commits show "AI" instead of a focus score. Toggle via neuroskill.focusCommits.

What you see

In the NeuroSkill sidebar, a collapsible "Recent Commits" section shows the last 8 commits:

👤 82  fix: resolve auth race condition
👤 45  chore: update dependencies  
🤖 AI  refactor: extract helper functions
👤 71  feat: add user preferences
  • 👤 = human-authored commit
  • 🤖 = AI-assisted commit (message generated by Copilot)
  • Focus badge = color-coded: green (>70), yellow (40-70), red (<40)
  • AI commits show "AI" instead of a focus score — AI output doesn't measure human cognition

How it works

  • When the extension detects a git commit (SCM input box clears), it:
    1. Snapshots current EEG focus via /brain/flow-state
    2. Checks AIActivityTracker.isCommitAIAssisted()
    3. Records the commit with focus score + source label
  • Commits stored in-memory (last 15), refreshed on sidebar render
  • The daemon also stores commits with human/AI distinction in build_events

Settings

neuroskill.focusCommits (default: true) — Show/hide the commits section in the sidebar.

Files

  • src/sidebar.tsrecordCommit(), _renderCommits()
  • src/extension.ts — Wires commit d...
Read more

RC channel pointer

29 Apr 05:35

Choose a tag to compare

RC channel pointer Pre-release
Pre-release

Mutable release that always carries the latest latest.json (RC or stable build). Used by users opted into the rc update channel. Do not delete.

Skill v0.0.129

24 Apr 01:20

Choose a tag to compare

Changelog

Features

  • Grayscale display mode: optional system-wide grayscale display that activates and deactivates in sync with Do Not Disturb. Reduces visual distraction during deep work. macOS only, default off — the default focus action remains Do Not Disturb only.

i18n

  • Grayscale translations: added dnd.grayscale and dnd.grayscaleDesc keys to all 9 locales (en, de, es, fr, he, ja, ko, uk, zh).

Dependencies

  • Fix rand 0.7.3 vulnerability: vendored phf_generator 0.8.0 locally with rand bumped from 0.7 to 0.8, eliminating the vulnerable rand 0.7.3 transitive dependency pulled in by selectors 0.24 → phf_codegen 0.8.

  • Remove atty: migrated iroh_test_client from structopt (clap v2) to clap v4 derive, dropping the unmaintained atty crate.

  • Dismiss stale Dependabot alerts: dismissed alerts for crossbeam-deque, crossbeam-utils, crossbeam-queue, memoffset, and glib — all already at patched versions or fixed in fork.

  • Update kittentts to 0.4.0: bumped kittentts from 0.3.0 to 0.4.0 in both skill-tts and src-tauri.

  • Update llama-cpp-4 to 0.2.50: bumped llama-cpp-4 and llama-cpp-sys-4 from 0.2.47 to 0.2.50, picking up upstream llama.cpp fixes including common_* symbol renames and llama-common-base static library linking.

  • Add grayscale crate: added grayscale 0.0.1 as a macOS-only dependency in skill-data.

Contributors

  • Eugene Hauptmann

Skill v0.0.128

23 Apr 13:42

Choose a tag to compare

Changelog

Features

  • llmfit
  • glib
  • notify
  • linter
  • updTed settings and engine
  • muda
  • fixed glib with a patch
  • refactored UI
  • Added unsloth/Qwen3.6-27B-GGUF

Contributors

  • Eugene Hauptmann

Skill v0.0.127

22 Apr 06:14

Choose a tag to compare

Changelog

Features

  • Add ANT Neuro eego amplifier family support via the antneuro crate (native USB backend, no vendor SDK required)
  • Supported models: eego 8, eego 24, eego 64, eego mylab, eego sport, eego rt, eego hub
  • Auto-detect channel count and sample rate from the amplifier on first data block
  • Configurable cap layout via Device API settings (antneuro_cap: auto, 10-20, 10-10, or explicit channel count)
  • Configurable sample rate via Device API settings (antneuro_sample_rate: 500, 512, 1000, 2048, etc.)
  • Waveguard electrode name mappings for 8, 21, 24, 25, 32, and 64-channel cap configurations
  • USB scanner auto-detects connected eego amplifiers every other tick
  • Device images and company logo for all 7 amplifier models in the Supported Devices catalog

Bugfixes

  • Fix PPG and IMU sample counts not being tracked in daemon status (ppg_sample_count/imu_sample_count always stayed at 0)
  • Fix cmd_status device block missing firmware, ppg_samples, and imu_samples fields (neuroskill CLI showed nulls)
  • Fix format_status_as_text reading stale key names (sample_count instead of eeg_samples)

UI

  • Improved supported devices card grid: wider columns, taller images with object-contain, text wraps instead of truncating

Contributors

  • Eugene Hauptmann
  • dependabot[bot]

Skill v0.0.126

20 Apr 05:04

Choose a tag to compare

Changelog

Features

  • daemon restart on launch

Contributors

  • Eugene Hauptmann

Skill v0.0.125

20 Apr 03:37

Choose a tag to compare

Changelog

Features

  • fixed auto connect

Contributors

  • Eugene Hauptmann