Skip to content

Releases: NetDevAutomate/StudyLoop

v0.2.1

Choose a tag to compare

@NetDevAutomate NetDevAutomate released this 05 Sep 11:21

v0.2.1

The honesty-and-hardening release for the second-brain layer, closing out the
2026-09-04 independent review. No new provider; the layer's claims now match
its evidence, the wind-down decision is data instead of protocol prose, and a
learning record finally has a writer.

Changes

  • The wind-down decision becomes a command. studyloop brain wind-down --json [--connector NAME] answers the one question the end-of-session
    protocol needs — which second-brain offer to make, if any — as
    {channel, offer, sentence, reason}. Two rules, not one conjunction: the
    publish offer needs a configured, publish-capable provider; the xTiles offer
    needs provider: xtiles plus an xtiles connector the session can actually
    see. The offer sentences are pinned byte-identical across the CLI, the
    protocol, the skill and the guide.
  • Learning records have a writer. studyloop plan record <plan-id> --title … [--body …] (and the record_plan_learning MCP tool) appends a learning
    record through the plan renderer — idempotent, numbered max+1, refusing
    bodies that would corrupt the document. The xTiles wind-down records into
    the plan first, so a second-brain page is a projection of a record the plan
    already has, never the only copy. ADR-0010 clause 1 amended to the rule the
    code obeys.
  • xTiles guidance says what was actually proven (first hand-run of the
    prompts, Kiro CLI 2.21.0): the planner prompt creates a tile and returns a
    URL; the project prompt stops promising board views or collection-page
    refreshes; the wind-down prompt skips the Review task when nothing is due;
    data sent is your whole study state, not one plan's; cleanup boundaries are
    stated. studyloop install agents no longer double-links the skill for
    OpenCode.
  • Obsidian writer hardening: no directory can be created outside the
    vault; --dry-run previews the "would replace your edits" warning; a note
    whose permissions cannot be read is refused rather than rewritten with
    defaults.
  • Fixed: get_study_history (MCP) and studyloop plan evaluate no longer
    fail on the session-history search (ambiguous column + multiple FTS MATCH
    constraints); multi-word topics now match as phrases.
  • Test honesty: the three tests that were red on main are root-caused
    and fixed; six wait_for_function async predicates that never awaited are
    replaced with a real polling helper; an acceptance suite (truth table, CLI
    contract, sentence pins, stub xTiles MCP server, live transcript gate
    checks) covers what previously needed a human; the release gate now fails on
    shipped-but-unarchived OpenSpec changes and stale ADR statuses, with an
    early-warning hook for three harnesses.

Verification

  • just preflight — 4790 passed, 4 skipped
  • just e2e — 503 passed, 20 skipped
  • just gate-checks — all three wind-down gate checks pass on captured
    transcripts (offer-once/decline/silence at 3/3, zero flakes)
  • GitHub CI green on the merged PR (#16), all 16 checks

v0.2.0 (superseded by 0.2.1)

Pre-release

Choose a tag to compare

@NetDevAutomate NetDevAutomate released this 05 Sep 11:21

v0.2.0 Release Notes

Adds an optional second brain: StudyLoop can publish your study plans, today's
next action and your due reviews into a place you already read.

Nothing about this release changes what StudyLoop does if you do not configure
it. There is no second_brain: section in a fresh config, and without one no
provider module is imported, no file is written, and the wind-down protocol says
nothing about it.

What is new

  • studyloop brainstatus, publish, pull, enable and template.
    publish writes a projection of a plan, of today, and of your due review
    cards; pull reads one note of yours back when you ask it to.
  • Obsidian, by writing plain files. Notes land in the folder you name inside
    the vault you name. StudyLoop overwrites only files carrying its own
    studyloop: frontmatter marker, never follows a symbolic link out of the
    vault, and republishing an unchanged plan writes nothing at all.
  • Your plan document stays the only source of truth. No backend, command or
    agent path writes back to it. Your own notes for a plan live in a sibling
    .notes.md file that StudyLoop only ever reads.
  • An Obsidian template (studyloop brain template --install) mirroring the
    plan document's sections, so a plan you write by hand and one StudyLoop
    published look the same. Templates carry no ownership marker: a note you make
    from one is yours.
  • xTiles, stage 1. Your assistant moves today's study and your whole plan
    into xTiles over its MCP connector. The Second Brain guide ships the three
    prompts, and studyloop install agents installs an opt-in wind-down skill.
    There is no programmatic xTiles client yet, and StudyLoop stores no xTiles
    credential.
  • One skill, installed once. The wind-down skill lives in
    ~/.agents/skills/ and is symlinked into each harness that documents a skills
    directory, so there is one file to read and one file to update.
  • studyloop config init offers to enable it after you accept a vault. It
    defaults to no, and declining writes nothing.

Honest limitations

  • Obsidian is the only provider with a programmatic backend. xTiles goes through
    your assistant, so what reaches xTiles is whatever your assistant sends.
  • A projection you hand-edit is replaced on the next publish, with a warning
    naming the file. Personal notes belong in the sibling .notes.md.
  • The vault boundary is enforced on every write, but a component of the path
    above the vault folder could in principle be replaced between the check and
    the write by someone who already has write access to your vault. This is a
    documented limitation, not a fixed one — see ADR-0010.
  • The wind-down offer's pacing is a property of a language model, not of code.
    Static guards prove the offer is present and conditional; a recorded
    transcript is what shows it is offered once.
  • The 0.1.0 limitations still stand: install is from a source checkout, and the
    Web UI is a laptop and tablet layout.

Withdrawn before release

An adapter for the official Obsidian CLI was built during development and
removed after a three-model review. It resolved its target by vault name, so a
second vault with the same name could receive the note, and it passed note text
as a command-line argument where another user on the machine could read it.
Writing the file directly is all this feature ever needed.

The keys use_cli, vault_name, template and daily_note now raise a
configuration error rather than being ignored. daily_note used to append a
line to your own daily note, and anyone who set it should be told it stopped.

Upgrade

Nothing to do. If you want the layer:

studyloop brain enable obsidian --vault ~/Obsidian/YourVault
studyloop brain publish
studyloop doctor

Verification

Run just release-check for the current automated release gate, just e2e for
the browser suite, and just docs for the strict public-documentation build.
The release decision cites the generated evidence from those runs, and the
multi-model review record under reviews/2026-09-03-second-brain/, never a test
total copied into this note.

StudyLoop 0.1.0 (pre-release)

Choose a tag to compare

@NetDevAutomate NetDevAutomate released this 03 Sep 08:18

v0.1.0 Release Notes

First public pre-release.

What StudyLoop is

StudyLoop is a local-first, AuDHD-aware study companion. It combines live
Socratic mentoring, Body Double sessions, study plans, spaced review, and a
searchable record of real learning sessions.

Version 0.1.0 is intentionally pre-1.0: the learner experience is usable, but
installation and public interfaces may still change as real users try it.

Mentor harnesses

The core pre-release contract is:

  • Kiro CLI, which is also used for the public demo;
  • Codex;
  • Claude Code.

OpenCode and pi are included as preview integrations. Their install, launch,
resume, export, doctor, automated-test, and live-turn results are tracked in
release evidence rather than asserted from static prose.

Each harness writes its own real conversation into the shared session database.
StudyLoop does not create generated-looking placeholder conversations or
progress rows when a harness, exporter, or extraction model fails.

What works

  • Study Session: an energy-aware Socratic mentor in the browser or terminal.
  • Body Double: one visible goal, a timer, and a quiet agent workspace.
  • Review: flashcards, quizzes, teach-backs, weak-link views, and spaced
    repetition.
  • Study plans: local plan documents, milestones, evidence, and checkpoints.
  • Session memory: exports from the five admitted harnesses into SQLite, with
    optional Obsidian mirroring.
  • Content generation: validated flashcard, quiz, and practice artefacts from
    live local or cloud model providers.

Honest limitations

  • Installation is from a source checkout; there is no PyPI or Homebrew release.
  • The Web UI requires the local studyloop web service and is built for laptop
    and tablet layouts. Phone widths get a usable bottom tab bar rather than a
    broken one, but a phone is not a supported layout and no journey is tested at
    that size.
  • Practice-task generation and verification are currently CLI workflows.
  • An agent-led planning interview is not integrated into the Web UI yet.
  • Two headline journeys have no automated end-to-end coverage, because both need
    a live agent or model provider that CI does not have: the Socratic study
    conversation itself, and generate-then-review for flashcards and quizzes. Each
    is exercised by hand. Everything else in the browser workspace runs on every
    change; the current pass count is in the release-gate evidence (just release-check), not copied here, so this note can never go stale on that
    number.
  • Live struggle extraction requires an explicitly selected Bedrock model and
    fails closed when the model or credentials are unavailable.
  • Automated verification and manual learner-journey acceptance are recorded as
    separate release evidence.

Install

git clone https://github.com/NetDevAutomate/StudyLoop studyloop
cd studyloop
./scripts/install.sh
studyloop setup
studyloop doctor --fix

Then run studyloop web and follow docs/first-week.md.

Verification

Run just release-check for the current automated release gate and just docs
for the strict public-documentation build. The release decision should cite the
generated evidence from the run, never a test total copied into this note.

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Apr 13:18

[2.5.0] - 2026-04-13

Bug Fixes

  • ci: Scope pyright to src/, upgrade 4 vulnerable deps
  • ci: Fix formula update sed to only replace main package SHA
  • Handle empty arrays under set -u in install/uninstall links
  • Make parked topic priority migration idempotent

Documentation

  • Compound solution record for v2.4.0 codebase remediation
  • Refresh architecture and release docs
  • Add just workflow to readme

Features

  • Add codex cli support and harden study sessions
  • Finish remediation backlog and install flow

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Apr 20:01

[2.4.0] - 2026-04-08

Bug Fixes

  • Path traversal, dead tests, install.sh version check
  • exporters: Protocol consistency, archive schema, incremental import
  • types: Resolve 73 pyright errors across test files
  • web: Restore missing Alpine stores, remove dead split.js ref

CI/CD

  • Add bandit SAST, pin action SHAs, add uv audit

Documentation

  • Document split-pane resize bug and layout redesign solution
  • Cleanup obsolete docs and add codebase review

Features

  • adapters: Extract agent logic into plugin architecture

Refactoring

  • Fix layer violations, UTC timestamps, dead code
  • settings: Data-driven load_settings, complexity 19→9
  • session: Extract _handle_start to session/start.py
  • session: Decompose end_session_common, complexity 19→4
  • query: Split query_logic.py into 3 focused modules

Testing

  • Add coverage for embeddings.py and semantic_search.py

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Apr 08:04

[2.3.0] - 2026-04-08

Bug Fixes

  • test: Update SW test to accept self-destruct mode

Features

  • web: Redesign study session layout — sidebar feed + full terminal + status bar

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Apr 18:47

[2.2.0] - 2026-04-06

Bug Fixes

  • Rename merged workflow to publish.yml for PyPI trusted publisher
  • Auto-migrate parked_topics table + add timer pause/reset controls
  • Security hardening + SSE optimization + parking dedup + docs update
  • Tmux pane creation — auto-switch, sidebar launch, bundled config
  • Tmux split sizing — switch client before split, drop hardcoded dimensions
  • Textual import — work decorator moved to textual namespace in 8.x
  • Clean panes + respect user's tmux config
  • Don't auto-load bundled tmux config — preserves user's theme
  • PERSONA_DIR path traversal — was 4 parents, needs 5
  • Web background launch uses studyctl entry point, not uv run
  • Resume blocked by stale session state after cleanup
  • Resume reuses session dir + saves session context to DB
  • Check Claude projects dir for resume detection, not .claude/ in cwd
  • Sidebar Q sends C-c to agent before cleanup
  • Reduce study session latency — CLAUDE.md + concise persona
  • Sidebar Q sends /exit not C-c, studyctl wrapper + PATH for agent
  • Add cli/main.py + wrapper integration tests
  • Sidebar Q test passes + resume -r flag verification
  • Resolve CI failures, Copilot review comments, and study session bugs
  • Exclude integration tests from pre-push pytest hook
  • Kill orphaned sidebar/agent processes after test suite
  • Doctor Kiro binary name (kiro → kiro-cli) + agent smoke tests
  • Sidebar Pilot test race — add await pilot.pause() before widget query
  • Wire adapter mcp_setup() call in session start
  • Doctor exit code aborts CI before filter runs + simplify .gitignore
  • Auto-create sessions DB on first use + atomic state file writes
  • Stale mock targets in test_mcp_tools + update roadmap
  • Obfuscate test Slack token to pass GitHub push protection
  • Multi-agent cleanup — crash recovery, MCP paths, schema drift
  • Claude trust bypass, browser polling, LAN URL display
  • Browser open survives os.execvp + draggable split-pane layout
  • Terminal panel visibility + browser open via os.fork
  • Session dashboard fills viewport when split-container is active
  • Add 'Return to inline' button on pop-out placeholder
  • Tmux dotted lines + iframe survives pop-out round-trip
  • Tmux window-size largest + iframe always loaded behind placeholder
  • Replace broken return-to-inline with clear instructions
  • Security and reliability — path traversal, format injection, file locking, PID cleanup
  • Content CLI signatures, code dedup, and 226 new tests
  • SSE duplicate div, flashcard_count API key, E2E demo test
  • 2 pre-existing bugs in query_logic.py
  • Always read lan_username from config, not just when password is empty
  • Always read lan_username from config, not just when password is empty
  • eval: Persona target starts sessions headlessly via internal API
  • eval: Increase LLM timeout to 120s, surface error details in judge
  • eval: Capture agent pane by ID, add debug logging to capture.py
  • eval: Two-phase capture + trust specific session dirs
  • eval: Auto-accept Claude Code trust dialog during eval sessions
  • eval: Compare pane content by value, not length (TUI agents)
  • eval: Correct Bedrock model ID to us.anthropic.claude-sonnet-4-6
  • eval: Clear pane ID on teardown to prevent stale pane reuse
  • eval: Increase capture timeouts for Claude Code response times
  • ci: Resolve nightly-install, CI test, and UAT failures
  • ci: Apply base schema before migrations on fresh DB
  • ci: Add --agent to double-start test, skip nested tmux on CI
  • ci: Pass -m integration to per-file UAT steps
  • doctor: Remove dead eval check left behind when eval moved to dev/
  • Propagate STUDYCTL_* env vars to tmux cleanup subprocess
  • test: Use .first for duplicate terminal panel locators in E2E tests

CI/CD

  • Add nightly UAT workflow for tmux integration tests

Documentation

  • Fix version refs, Python 3.12+ requirement, and doc consistency
  • Update roadmap, TODO, and CLI reference for v2.1.0
  • Update all user-facing docs for core-only compaction
  • Add live session dashboard brainstorm
  • Add unified session architecture brainstorm
  • Compound learnings — parallel research catches plan assumptions
  • Update README, CLI reference, and roadmap for studyctl study command
  • Update CLI reference, README, roadmap for session lifecycle
  • Add system overview — full component map with Mermaid diagrams
  • Update TODO.md with v2.2 live session dashboard progress
  • Add solution doc for tmux session management and CI fixes
  • Update TODO.md with v2.2.1 completed items and next steps
  • Update roadmap with v2.2.1 completed, clean next phases
  • Comprehensive TODO with study backlog, testing mandate, estimates
  • Add session handoff for 2026-04-02
  • Add session handoff for 2026-04-03
  • Comprehensive system architecture with PlantUML diagrams
  • Update architecture, roadmap, and test counts for v2.2 completion
  • Fix stale references — query_sessions split, config unification, FCIS paths
  • Add v2.2 release handoff — remaining refactors plan
  • Compound solution doc — SQLite schema drift + CI mock targeting
  • Update all documentation for current architecture
  • Add Phase 6 complete handoff for next session
  • Compound learning — multi-agent adapter mcp_setup() gap
  • Update artefact links
  • Update artefact links
  • Update roadmap — multi-agent complete, v2.2.0 scope defined
  • Update all documentation for ttyd + multi-agent cleanup
  • Update roadmap, CLI reference, and .gitignore for v2.2.0 local LLMs
  • Add content pipeline, TUI, and web UI user guides
  • Persona optimisation Tier 2 design spec
  • Persona eval implementation plan — 13 tasks across 4 chunks
  • Persona optimizer loop plan + session handoff
  • Add autoresearch persona optimizer runbook
  • Add CI workflow failures solution (7 root causes)
  • Add C4 architecture diagrams (context, container, component)

Features

  • Add live session foundation — parking lot persistence, session CLI, IPC protocol
  • Add cmux native dashboard — Phase 1.5 agent protocol + MCP config
  • Add web PWA live session dashboard — Phase 2
  • Add studyctl study command — Phase 1 unified session architecture
  • Auto-cleanup when agent exits + sidebar end-session binding
  • Persistent session directories for AI conversation history
  • Pomodoro countdown timer in Textual sidebar
  • Studyctl topic command + persona CLI instructions + resume context
  • Integration tests with mock agent — 7 pass, real tmux sessions
  • Comprehensive integration tests — 22 pass, full lifecycle
  • Add bridge CLI command + 4 E2E experience verification tests
  • Add studyctl clean command with FCIS architecture
  • Tmux-resurrect compatibility — auto-clean, docs, doctor check
  • Study backlog phase 1 — topics CRUD, auto-persist, agent surfacing
  • Study backlog phase 2 — AI prioritization, MCP tools, session-db integration
  • Vendor HTMX, Alpine.js, SSE extension, OpenDyslexic for offline PWA
  • V2.2 Phase A — break suggestions, energy streaks, MCP registration, vendor Inter
  • V2.2 Phase B — nested tmux UAT and --end from outside tests
  • Phase 6 CI/CD — nightly install, pre-release gate, backup/restore
  • Phase 2 multi-agent support — wire Gemini, Kiro, OpenCode adapters
  • Migrate session-db-mcp server from extract_session_to_db
  • Ttyd integration — web terminal, --lan flag, browser auto-open
  • Same-origin ttyd proxy + LAN password protection + pop-out fix
  • Local LLM support — Ollama and LM Studio adapters
  • Study briefing — cohesive loop connecting content, review, and sessions
  • Autoresearch iterate runner + persona effectiveness tracking
  • web: Unified sidebar navigation with 4 content views
  • web: Rewrite flashcard/quiz engine as Alpine.js components
  • web: Alpine Pomodoro store, delete app.js + session.html
  • Topic_slug in session DB + LAN username/password config
  • Web session start/end, tmux safety guard, LAN auth tests, content CLI tests
  • eval: Autonomous persona evaluation harness — 13 tasks, 130 tests
  • Autoresearch Phase 3 — reporting, regression detection, CI workflow
  • eval: Add AWS Bedrock provider for LLM judge
  • eval: Add judge feedback for persona prompt optimisation
  • eval: Log agent response, judge scores, dimensions, and feedback
  • persona: Autoresearch-optimised study mentor persona
  • persona: Autoresearch-optimised co-study companion persona

Refactoring

  • Consolidate test infrastructure and document conventions (#1)
  • Move clean_logic to package level + wire service layer
  • Create logic/ subpackage + fix parking table schema drift
  • Clean up config loader, split query_sessions monolith, fix CI failures
  • 3 quick fixes from comprehensive code review
  • Split god modules — history/, session/, topics.py + SM-2 fix
  • Code quality sweep — circular deps, deduplication, agent config consistency
  • eval: Replace tmux capture with claude -p print mode
  • Remove eval harness module (moved to dev/)
  • Remove dead EvalConfig from settings (eval moved to dev/)

Testing

  • Add sidebar Q cleanup test (xfail — tmux send-keys vs Textual)
  • Add harness matrix agent and test_harness_matrix.py
  • web: Add 13 Playwright sidebar E2E tests, update terminal tests
  • content: Add integration tests for generate, download, list, delete CLI
  • Fill coverage gaps found during v2.2.0 audit
  • Add web CLI command tests (7 tests)

Compact

  • Strip to 4 core features, prune CLI to 13 commands, fix doctor tests

Merge

  • Resolve conflicts with main (local LLMs + PID safety)

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Mar 18:16

[2.1.0] - 2026-03-17

Bug Fixes

  • Use
    instead of
    in Mermaid diagram for GitHub rendering

Documentation

  • Update README with PyPI/Homebrew install, fix repo URLs to lowercase
  • Update artefact links
  • Add web UI quiz screenshot, scale down TUI image
  • Add web UI quiz screenshot
  • Design spec for studyctl doctor/upgrade/install-mentor + CI/CD pipeline
  • Add doctor/upgrade/install-mentor to user-facing documentation

Features

  • doctor: Add diagnostic engine with 7 checker modules
  • doctor: Add doctor/update/upgrade CLI commands
  • install-mentor: Add tool-agnostic AI setup agent prompt

v2.0.0 — Unified Study Platform

Choose a tag to compare

@NetDevAutomate NetDevAutomate released this 16 Mar 15:10

[2.0.0] - 2026-03-16

Bug Fixes

  • Make repo URLs independent of hosting platform
  • Resolve remaining pyright errors and ruff formatting
  • Install-agents.sh compatibility with macOS default bash 3.2
  • Append topics template to existing config if missing
  • Install CLI tools globally via uv tool install
  • Make root a virtual workspace, fix deprecated license format
  • Artefact links open in new tab with raw binary for playback
  • Use raw.githubusercontent.com URLs for artefact playback
  • Correct bugs in spaced repetition, progress tracking, and config
  • Resample kokoro 24kHz→48kHz to fix crackling on some audio devices
  • Move skills to resources in Kiro agent config (skills field not supported)
  • Add study-speak directive to persona prompt (resources alone not enough)
  • Remove sentence splitting — single call eliminates inter-sentence gaps
  • Harden sync.py against SQL/command injection, add .gitignore DB patterns
  • Align Python version to >=3.12, consolidate ruff config
  • Defer config loading, remove getattr magic, narrow exception handlers
  • Symlink kiro references to agents/shared, align Claude session protocol
  • ICS timezone suffix, return type hints, falsy check correction
  • CI failures — ruff format, pyright type errors, scheduler test, untrack index.html from LFS
  • Update pre-commit hooks for monorepo layout
  • Suppress pyright for optional mcp import inline
  • Checkout LFS files in docs deploy so artefacts aren't pointers
  • Correct bugs in progress tracking, config, and study sessions
  • Add build-system config to workspace root pyproject.toml
  • Expand tilde paths in remote SSH commands
  • Seed remote DB on first push, handle missing remote on pull
  • Install kokoro TTS deps with agent-session-tools, warn on fallback
  • Register tui command in studyctl CLI
  • Remove list_concepts import that doesn't exist in history.py
  • Relax glob patterns to match NotebookLM quiz/flashcard filenames
  • Resolve all ruff and pyright CI failures for TUI
  • Rewrite Kiro exporter for v2 table and nested message format
  • Add studyctl pyright to pre-commit and move pytest to pre-push
  • Replace non-deterministic GROUP BY with ROW_NUMBER() in get_due_cards
  • Display per-source stats in export progress bar, not cumulative
  • Narrow suppress(Exception) to specific types with logging
  • Use sys.executable for textual-serve subprocess
  • Ttyd --interface arg order causing bind failure
  • Use parent directory name when course dir is 'downloads'
  • Close out code review items A1-A4 and consolidate TODO
  • Match stdlib server JSON format for app.js backward compat
  • Constrain session config bar to fit within parent card
  • Guard web tests with importorskip(fastapi) for CI

CI/CD

  • Add Python version matrix (3.12/3.13) and GitHub Pages deployment
  • Add CHANGELOG, git-cliff config, and release workflow

Documentation

  • Add README, guides, roadmap, and contributing
  • Improve README intro with AuDHD-focused description
  • Add MCP integrations, calendar time-blocking, and WSL2 support
  • Update README with win tracking, calendar blocks, status line, and MCP integrations
  • Add acknowledgement to Teng Lin for notebooklm-py
  • Add NotebookLM-generated artefacts to README
  • Update README, agent-install, and roadmap for all platforms
  • Add study-speak voice output to session protocol
  • Add full path fallback for study-speak in session protocol
  • Make study-speak mandatory in session protocol
  • Add @speak-start/@speak-stop toggle for voice output
  • Add voice output guide, update README and roadmap
  • Replace placeholder URLs, update CLI reference, fix documentation gaps
  • Add artefacts page to MkDocs, update nav
  • Update roadmap with review findings, add v1.3 AuDHD features
  • Suppress interleaving on low energy, add admonition style guide
  • Mark interleaving suppression and admonition guide as complete
  • Mark auto-resume, streaks, progress-map, medication timing as complete
  • Add comprehensive test coverage plan (5 waves, ~1560 new test lines)
  • Add study-speak MCP server docs, fix agent MCP configs, expand voice guide
  • Unify voice behavior — speak questions, answers, and key principles
  • Mark AuDHD methodology enhancements as complete
  • Mark MkDocs documentation site as complete
  • Update README, agent-install, and roadmap for all platforms
  • Update artefact links
  • Document unified hosts config and session-sync integration
  • Update TODO with phases 6-13 roadmap from marathon session
  • Compound learnings from marathon session
  • Update artefact links
  • Update artefact links
  • Update artefact links
  • Add TUI dashboard docs to README, setup guide, and CLI reference
  • Add TUI screenshot via headless Textual capture
  • Comprehensive update for web PWA, voice, and accessibility features
  • Add unified study platform brainstorm, plan, research, and reviews
  • Update all user-facing documentation for Phase 0+1 changes

Features

  • Add agent-session-tools package
  • Add studyctl package
  • Add kiro-cli agent definitions and skills
  • Add claude code agents and status line
  • Add install scripts
  • Add calendar time-blocking with ICS generation
  • Add GitHub Pages artefact player and reusable setup script
  • Publish NotebookLM artefacts with GitHub Pages player
  • Unify agent framework across all platforms with shared AuDHD methodology
  • Add emotional regulation, transition support, parking lot, and sensory patterns
  • Add MkDocs Material documentation site with AuDHD-friendly design
  • Add study-speak CLI for TTS voice output
  • Switch study-speak to kokoro-onnx (am_michael, ~1.5s TTFA)
  • Add study-speak as Kiro skill with @speak-start/@speak-stop toggle
  • Add study-speak MCP server for native Kiro tool integration
  • Study-speak MCP server for Kiro agent
  • Speak full response in sentences, not just the question
  • Add voice/speed/pause config for study-speak
  • Add studyctl docs command group (serve, open, list, read)
  • Add PDA demand-light mode, express session start, expanded RSD coverage
  • Add auto-resume, streaks, progress-map, medication timing
  • Publish NotebookLM artefacts with GitHub Pages player
  • Add logo integration for GitHub Pages and repository
  • Auto-install uv and optional voice model download in install.sh
  • Add v1.4 pedagogical intelligence — teach-back, breaks, wind-down, bridges
  • Add interactive config init, config show, NotebookLM settings, agent install integration
  • Unify agent framework across all platforms with shared methodology
  • Add concept graph layer — Phase A schema + data migration
  • Teach study mentor agents about eBook audio overviews
  • Add install-tools.sh for global CLI tool installation
  • Session-sync reads hosts from studyctl config
  • Teach agents about quiz & flashcard generation from Obsidian
  • Add StudyCards TUI with spaced repetition and voice support
  • Implement list_concepts() and wire into TUI Concepts tab
  • Add course picker modal for multiple study directories
  • Add retry wrong answers mode with r key binding
  • Add tui.theme config option and fix voice toggle focus
  • Add dyslexic-friendly mode with OpenDyslexic font guidance
  • Add --serve flag with OpenDyslexic font in web UI
  • Add --host flag for LAN access in serve mode
  • Add o key to toggle dyslexic-friendly mode in TUI
  • Use ttyd as primary web serve backend, textual-serve as fallback
  • Add study PWA web app with flashcard and quiz review
  • Add voice, navigation, and remove ttyd/textual-serve code
  • Add source filter, card limit, history, heatmap, theme, voice improvements
  • Add Pomodoro timer with audio chime and browser notifications
  • Add speak-once button on cards for on-demand voice
  • Phase 1 content absorption — port pdf-by-chapters into studyctl content
  • Phase 2 FastAPI web UI — replace stdlib server with FastAPI
  • Phase 3 MCP agent integration — FastMCP server with 6 tools
  • Phase 4 PyPI packaging, setup wizard, Homebrew formula

Refactoring

  • Remove bedrock proxy exporter (no longer supported)
  • Consolidate config to ~/.config/studyctl/
  • Standardise artefact names, add Repo Deep Dive section
  • Consolidate duplicated functions into shared modules
  • Split query_sessions.py into query_utils, formatters modules
  • Unify hosts config with hostname-based auto-detection
  • Consolidate install scripts into single install.sh
  • Phase 0 pre-work — config consolidation, CLI split, WAL mode, service layer

Styling

  • Format studyctl package with ruff

Testing

  • Add comprehensive test coverage (72 → 390 tests)