docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
# Hermes Web UI — Sprint Planning
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
> Forward-looking sprint plan and active queue.
2026-03-31 03:40:19 +00:00
>
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
> Current state: v0.50.281 | 3995 tests | port 8787
> Target A (CLI parity): ✅ Complete
> Target B (Claude parity): ~95% — full subagent transparency UI and code-execution cells remain
2026-03-31 03:40:19 +00:00
>
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
> Per-version detail: [CHANGELOG.md](./CHANGELOG.md)
> Sprint history (chronology): [ROADMAP.md](./ROADMAP.md)
2026-03-31 03:40:19 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## How sprints work here
feat: Sprint 17 -- workspace breadcrumbs, slash commands, send key setting
Track A: Workspace breadcrumb navigation
- Breadcrumb path bar with clickable segments when inside subdirectories
- Up button in panel header for parent directory navigation
- S.currentDir state tracking; file ops stay in current directory
- New file/folder creation respects current subdirectory
Track B: Slash commands foundation
- New commands.js module (7th JS module) with command registry and parser
- Built-in commands: /help, /clear, /model, /workspace, /new
- Autocomplete dropdown on / input with arrow/tab/enter/escape navigation
- Unrecognized commands pass through to agent normally
Track C: Send key setting (closes #26)
- send_key added to settings defaults in api/config.py
- Settings panel dropdown: Enter (default) vs Ctrl/Cmd+Enter
- Keydown handler rewritten for autocomplete + send key preference
- Setting loaded on boot, persisted to settings.json
5 new tests, 242 total (219 passing, 22 pre-existing failures, 0 regressions).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:31:31 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
A sprint is a thematic batch — usually 3– 8 PRs landed together as a release. Each sprint has:
feat: Sprint 17 -- workspace breadcrumbs, slash commands, send key setting
Track A: Workspace breadcrumb navigation
- Breadcrumb path bar with clickable segments when inside subdirectories
- Up button in panel header for parent directory navigation
- S.currentDir state tracking; file ops stay in current directory
- New file/folder creation respects current subdirectory
Track B: Slash commands foundation
- New commands.js module (7th JS module) with command registry and parser
- Built-in commands: /help, /clear, /model, /workspace, /new
- Autocomplete dropdown on / input with arrow/tab/enter/escape navigation
- Unrecognized commands pass through to agent normally
Track C: Send key setting (closes #26)
- send_key added to settings defaults in api/config.py
- Settings panel dropdown: Enter (default) vs Ctrl/Cmd+Enter
- Keydown handler rewritten for autocomplete + send key preference
- Setting loaded on boot, persisted to settings.json
5 new tests, 242 total (219 passing, 22 pre-existing failures, 0 regressions).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:31:31 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
1. **Theme** — single-sentence framing of what changes
2. **Items** — selected work, with tracking issue / PR
3. **Out of scope** — what is explicitly deferred and why
4. **Risks** — known sharp edges
5. **Retro** — once shipped, what we learned
feat: Sprint 17 -- workspace breadcrumbs, slash commands, send key setting
Track A: Workspace breadcrumb navigation
- Breadcrumb path bar with clickable segments when inside subdirectories
- Up button in panel header for parent directory navigation
- S.currentDir state tracking; file ops stay in current directory
- New file/folder creation respects current subdirectory
Track B: Slash commands foundation
- New commands.js module (7th JS module) with command registry and parser
- Built-in commands: /help, /clear, /model, /workspace, /new
- Autocomplete dropdown on / input with arrow/tab/enter/escape navigation
- Unrecognized commands pass through to agent normally
Track C: Send key setting (closes #26)
- send_key added to settings defaults in api/config.py
- Settings panel dropdown: Enter (default) vs Ctrl/Cmd+Enter
- Keydown handler rewritten for autocomplete + send key preference
- Setting loaded on boot, persisted to settings.json
5 new tests, 242 total (219 passing, 22 pre-existing failures, 0 regressions).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:31:31 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
External contributor PRs that don't fit a planned sprint get released individually as patch versions (`v0.50.X`). Sprints are reserved for coherent batches where the items reinforce each other.
feat: Sprint 17 -- workspace breadcrumbs, slash commands, send key setting
Track A: Workspace breadcrumb navigation
- Breadcrumb path bar with clickable segments when inside subdirectories
- Up button in panel header for parent directory navigation
- S.currentDir state tracking; file ops stay in current directory
- New file/folder creation respects current subdirectory
Track B: Slash commands foundation
- New commands.js module (7th JS module) with command registry and parser
- Built-in commands: /help, /clear, /model, /workspace, /new
- Autocomplete dropdown on / input with arrow/tab/enter/escape navigation
- Unrecognized commands pass through to agent normally
Track C: Send key setting (closes #26)
- send_key added to settings defaults in api/config.py
- Settings panel dropdown: Enter (default) vs Ctrl/Cmd+Enter
- Keydown handler rewritten for autocomplete + send key preference
- Setting loaded on boot, persisted to settings.json
5 new tests, 242 total (219 passing, 22 pre-existing failures, 0 regressions).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:31:31 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Active sprint candidates
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
These are the issues currently labeled `sprint-candidate` — the inbox the next sprint plan draws from. Each item already has a confirmed root cause or design direction.
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
| # | Title | Type | Sprint fit |
|---|---|---|---|
| #1458 | Persistent-host crashes — bootstrap fork pattern, state.db FD leak, HTTP-unhealthy wedge | bug, stability | Stability sprint candidate |
| #1426 | OpenRouter free-tier `:free` variants invisible (tool-support filter) | bug + feat | Model picker sprint candidate |
| #1362 | In-app OAuth login for Codex and Claude (currently terminal-only) | feat, ux | Onboarding sprint candidate |
| #1360 | macOS desktop app — auto-scroll overrides user scroll (#677 regression) | bug, ux | Desktop app polish |
| #1291 | GLM mutually exclusive between main agent and auxiliary title generation | bug | Auxiliary-route sprint |
docs: comprehensive update of all markdown files for v0.21
ARCHITECTURE.md:
- 6→7 JS modules (added commands.js), updated all line counts
- Added api/auth.py to file inventory
- Added HERMES_WEBUI_PASSWORD env var
- Added projects.json to state directory listing
- Replaced PORTABILITY.md ref with BUGS.md
- Updated test file references (test_sprint1-19, 327 functions)
ROADMAP.md:
- Version Sprint 17/v0.19 → Sprint 19/v0.21, test count 294→327
- Added Sprint 18 + 19 rows to sprint history table
- Updated architecture table (api/ 2491 lines, JS 3148 lines)
- Added sections: Workspace, Slash Commands, Security, Thinking
- Added Sprint 20-24 to Advanced/Future (voice, mobile, multi-profile,
desktop, extended commands)
SPRINTS.md:
- Header v0.20→v0.21, 318→327 tests
- "Where we are now" updated from v0.18 to v0.21
- Removed two stale/duplicate "Sprint 18" sections (Voice + Subagent)
- Added completed Sprint 18 (thinking + tree + preview fix)
- Added completed Sprint 19 (auth + security)
- Added planned Sprints 20-24 (voice, mobile, multi-profile, desktop, commands)
- Parity tables fully updated with current Done/Deferred status
CHANGELOG.md:
- Added v0.21 Sprint 19 entry (auth, security headers, 20MB limit)
TESTING.md:
- Header "through Sprint 2" → "through Sprint 19 (v0.21)"
- Added test count and pytest command to header
- Added 9 new manual test sections covering Sprints 11-19
- Updated footer with current stats
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:00 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
The active queue stays small — it's the next 1-2 sprints' worth of work. The broader backlog of feature requests lives in [ROADMAP.md → Forward Work ](./ROADMAP.md#forward-work ) and on the GitHub `enhancement` label.
2026-03-31 03:40:19 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Planning principles
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**Phase-0 fit assessment.** Every sprint candidate gets a marginal-benefit screen first: does this make the product noticeably better for real users, or does it add surface area that costs more to maintain than it earns? Five-question fit screen — need / shape / bloat / clutter / scope.
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**Salvage over absorb.** When a contributor PR is partial or scoped wrong, prefer splicing the good parts into a maintainer-side PR with `Co-authored-by` attribution rather than asking for multiple rebase rounds. Only absorb whole when the PR is genuinely shippable as-is.
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**Independent-review gate.** Self-built PRs need either (a) Opus advisor pass on the merged stage diff, or (b) independent review from a separate reviewer. High-risk batches (large LOC, security, locks, durability) get both.
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**Per-PR release velocity.** When a single PR fixes a real bug and has a clean review, ship it as its own patch release the same day rather than waiting for a sprint batch. Friction-free is the goal — sprint batches exist for coherence, not for arbitrary grouping.
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**No feature creep mid-PR.** If a contributor proposes a scope addition during review, file it as a separate PR and link from the original. The current PR keeps its original boundaries.
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**Pre-release gate (mandatory).** Every release runs:
1. `pytest tests/ -q --timeout=120` clean
2. Browser sanity check (HTTP-level API tests against a test server)
3. Opus advisor pass on the merged stage diff with a written brief
4. CHANGELOG.md + ROADMAP.md + TESTING.md version stamp
5. CI green on Python 3.11 / 3.12 / 3.13
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
Skipping any of these requires a documented "I'm doing an override" from the maintainer.
docs: comprehensive update of all markdown files for v0.21
ARCHITECTURE.md:
- 6→7 JS modules (added commands.js), updated all line counts
- Added api/auth.py to file inventory
- Added HERMES_WEBUI_PASSWORD env var
- Added projects.json to state directory listing
- Replaced PORTABILITY.md ref with BUGS.md
- Updated test file references (test_sprint1-19, 327 functions)
ROADMAP.md:
- Version Sprint 17/v0.19 → Sprint 19/v0.21, test count 294→327
- Added Sprint 18 + 19 rows to sprint history table
- Updated architecture table (api/ 2491 lines, JS 3148 lines)
- Added sections: Workspace, Slash Commands, Security, Thinking
- Added Sprint 20-24 to Advanced/Future (voice, mobile, multi-profile,
desktop, extended commands)
SPRINTS.md:
- Header v0.20→v0.21, 318→327 tests
- "Where we are now" updated from v0.18 to v0.21
- Removed two stale/duplicate "Sprint 18" sections (Voice + Subagent)
- Added completed Sprint 18 (thinking + tree + preview fix)
- Added completed Sprint 19 (auth + security)
- Added planned Sprints 20-24 (voice, mobile, multi-profile, desktop, commands)
- Parity tables fully updated with current Done/Deferred status
CHANGELOG.md:
- Added v0.21 Sprint 19 entry (auth, security headers, 20MB limit)
TESTING.md:
- Header "through Sprint 2" → "through Sprint 19 (v0.21)"
- Added test count and pytest command to header
- Added 9 new manual test sections covering Sprints 11-19
- Updated footer with current stats
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:00 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Sprint shape
2026-04-03 17:28:47 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
A typical sprint runs 3-7 days end to end:
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
| Phase | Duration | Output |
|---|---|---|
| Triage | 0.5 day | Active queue → selected items + scope notes |
| Design / spike | 0.5– 1 day | Design notes for items needing them; deferrals documented |
| Build | 2– 4 days | Each item on its own branch + PR for independent review |
| Review | 0.5– 1 day | Maintainer + Opus advisor passes; SHOULD-FIX absorbed in-release |
| Stage + ship | 0.5 day | Stage branch, full test suite, release PR, tag, deploy, verify live |
| Hygiene | 0.5 day | Close PRs / issues, GitHub release notes, docs sync, retro |
2026-04-03 17:28:47 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
Smaller sprints (1– 2 PRs) compress to 1– 2 days end to end. Single-PR releases skip the stage branch and ship via a release PR directly off the contributor's branch (or a maintainer-rebased copy if the fork doesn't grant write access).
2026-03-31 03:40:19 +00:00
docs: comprehensive update of all markdown files for v0.21
ARCHITECTURE.md:
- 6→7 JS modules (added commands.js), updated all line counts
- Added api/auth.py to file inventory
- Added HERMES_WEBUI_PASSWORD env var
- Added projects.json to state directory listing
- Replaced PORTABILITY.md ref with BUGS.md
- Updated test file references (test_sprint1-19, 327 functions)
ROADMAP.md:
- Version Sprint 17/v0.19 → Sprint 19/v0.21, test count 294→327
- Added Sprint 18 + 19 rows to sprint history table
- Updated architecture table (api/ 2491 lines, JS 3148 lines)
- Added sections: Workspace, Slash Commands, Security, Thinking
- Added Sprint 20-24 to Advanced/Future (voice, mobile, multi-profile,
desktop, extended commands)
SPRINTS.md:
- Header v0.20→v0.21, 318→327 tests
- "Where we are now" updated from v0.18 to v0.21
- Removed two stale/duplicate "Sprint 18" sections (Voice + Subagent)
- Added completed Sprint 18 (thinking + tree + preview fix)
- Added completed Sprint 19 (auth + security)
- Added planned Sprints 20-24 (voice, mobile, multi-profile, desktop, commands)
- Parity tables fully updated with current Done/Deferred status
CHANGELOG.md:
- Added v0.21 Sprint 19 entry (auth, security headers, 20MB limit)
TESTING.md:
- Header "through Sprint 2" → "through Sprint 19 (v0.21)"
- Added test count and pytest command to header
- Added 9 new manual test sections covering Sprints 11-19
- Updated footer with current stats
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:00 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Sprint history
feat: multi-profile support -- create, switch, delete profiles from web UI (Issue #28)
Add full profile management to the web UI, matching the hermes-agent CLI
profile system. Profiles are isolated HERMES_HOME instances with their own
config, skills, memory, cron, and API keys.
Backend: new api/profiles.py wrapping hermes_cli.profiles, dynamic config
reloading, 5 new API endpoints, profile-aware path resolution, HERMES_HOME
env save/restore in streaming, module-level cache patching for skills_tool
and cron/jobs.
Frontend: profile chip in topbar with dropdown, Profiles sidebar panel with
CRUD UI, boot-time profile fetch, cascade refresh on switch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 17:50:21 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
Per-version detail is in [CHANGELOG.md ](./CHANGELOG.md ). High-level theme chronology is in [ROADMAP.md → Sprint History ](./ROADMAP.md#sprint-history ). A few notable sprints worth highlighting:
2026-03-31 03:40:19 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
- **Sprint 19** — auth + security hardening. First sprint that made the app safe to leave running beyond localhost.
- **Sprint 21** — mobile responsive + Docker. Two-container compose enabled the first wave of self-host deployments.
- **Sprint 22** — multi-profile support. Major CLI-parity unlock; profile switching is now seamless without server restart.
- **Sprint 25** — macOS desktop application. Native Swift + WKWebView shell, universal Intel + Apple Silicon DMG, Sparkle 2 auto-update. Lives in the separate `hermes-webui/hermes-swift-mac` repo.
- **Sprint 26** — pluggable themes. CSS-variable-driven 8-theme system that lets community contributors add themes as pure CSS.
- **Sprint 34** — v0.50.0 UI overhaul. Composer-centric controls, Control Center modal, workspace state machine, rAF streaming throttle.
docs: comprehensive update of all markdown files for v0.21
ARCHITECTURE.md:
- 6→7 JS modules (added commands.js), updated all line counts
- Added api/auth.py to file inventory
- Added HERMES_WEBUI_PASSWORD env var
- Added projects.json to state directory listing
- Replaced PORTABILITY.md ref with BUGS.md
- Updated test file references (test_sprint1-19, 327 functions)
ROADMAP.md:
- Version Sprint 17/v0.19 → Sprint 19/v0.21, test count 294→327
- Added Sprint 18 + 19 rows to sprint history table
- Updated architecture table (api/ 2491 lines, JS 3148 lines)
- Added sections: Workspace, Slash Commands, Security, Thinking
- Added Sprint 20-24 to Advanced/Future (voice, mobile, multi-profile,
desktop, extended commands)
SPRINTS.md:
- Header v0.20→v0.21, 318→327 tests
- "Where we are now" updated from v0.18 to v0.21
- Removed two stale/duplicate "Sprint 18" sections (Voice + Subagent)
- Added completed Sprint 18 (thinking + tree + preview fix)
- Added completed Sprint 19 (auth + security)
- Added planned Sprints 20-24 (voice, mobile, multi-profile, desktop, commands)
- Parity tables fully updated with current Done/Deferred status
CHANGELOG.md:
- Added v0.21 Sprint 19 entry (auth, security headers, 20MB limit)
TESTING.md:
- Header "through Sprint 2" → "through Sprint 19 (v0.21)"
- Added test count and pytest command to header
- Added 9 new manual test sections covering Sprints 11-19
- Updated footer with current stats
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:00 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Out of scope (across all sprints)
2026-04-03 18:46:15 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
These are intentionally not on the roadmap. Listing them here to save planning cycles.
2026-04-03 18:46:15 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
- **Multi-user collaboration** — single-user assumption throughout the codebase. Refactoring would be a from-scratch architecture change.
- **Sharing / public conversation URLs** — requires hosted backend with access control + CDN. Out of scope for self-hosted.
- **Plugin marketplace** — Hermes skills already cover this surface.
- **Anthropic / Claude proprietary features** — Projects AI memory, Claude artifacts sync. Not reproducible.
- **Linux / Windows native app wrappers** — macOS done; demand on other platforms not yet established. Web UI works in any browser.
- **App Store distribution** — sandboxing breaks the local-server model.
- **Auto-update mechanism for the Python webapp** — Sparkle 2 covers the Mac app; the webapp updates via `git pull` + restart, which is the same as every other Python service.
2026-04-03 18:46:15 +00:00
---
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Templates
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
When opening a new sprint plan, copy this structure:
docs: comprehensive update of all markdown files for v0.21
ARCHITECTURE.md:
- 6→7 JS modules (added commands.js), updated all line counts
- Added api/auth.py to file inventory
- Added HERMES_WEBUI_PASSWORD env var
- Added projects.json to state directory listing
- Replaced PORTABILITY.md ref with BUGS.md
- Updated test file references (test_sprint1-19, 327 functions)
ROADMAP.md:
- Version Sprint 17/v0.19 → Sprint 19/v0.21, test count 294→327
- Added Sprint 18 + 19 rows to sprint history table
- Updated architecture table (api/ 2491 lines, JS 3148 lines)
- Added sections: Workspace, Slash Commands, Security, Thinking
- Added Sprint 20-24 to Advanced/Future (voice, mobile, multi-profile,
desktop, extended commands)
SPRINTS.md:
- Header v0.20→v0.21, 318→327 tests
- "Where we are now" updated from v0.18 to v0.21
- Removed two stale/duplicate "Sprint 18" sections (Voice + Subagent)
- Added completed Sprint 18 (thinking + tree + preview fix)
- Added completed Sprint 19 (auth + security)
- Added planned Sprints 20-24 (voice, mobile, multi-profile, desktop, commands)
- Parity tables fully updated with current Done/Deferred status
CHANGELOG.md:
- Added v0.21 Sprint 19 entry (auth, security headers, 20MB limit)
TESTING.md:
- Header "through Sprint 2" → "through Sprint 19 (v0.21)"
- Added test count and pytest command to header
- Added 9 new manual test sections covering Sprints 11-19
- Updated footer with current stats
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:00 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
```markdown
# Sprint NN — <theme>
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
**Version target:** vX.Y.Z
**Theme:** < single sentence >
**Date started:** YYYY-MM-DD
**Status:** PLANNED | IN PROGRESS | COMPLETED — vX.Y.Z
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Items
| # | Issue | Title | Complexity | Files | PR |
|---|-------|-------|------------|-------|-----|
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Rationale
Why these items, why now.
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Build approach
Per-item branch + PR; or single combined branch if items are tightly coupled.
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Out of scope
What did NOT make this sprint and why.
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Known risks
Sharp edges to watch during review.
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## PR Status
| Issue | PR | Status |
|-------|-----|--------|
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
## Retro (post-ship)
What worked, what we'd do differently.
docs: v0.29 release notes + roadmap/sprint plan updates
- CHANGELOG.md: add v0.29 entry covering all Sprint 23 deliverables
(token/cost display, subagent cards, skill picker, linked files viewer,
workspace tree persistence, timestamp fixes, XSS + security fixes)
- ROADMAP.md: update to v0.29, add Sprint 23 to history table, check off
token/cost, skill linked files, skill picker in cron (3 items closed)
- TESTING.md: update automated test count 415 -> 424
- SPRINTS.md: add Sprint 24 (web polish bug fix pass) and Sprint 25
(macOS native desktop app) forward plans; remove stale stub entries
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
2026-04-04 02:36:18 +00:00
```
2026-04-05 03:36:42 +00:00
docs: rewrite ROADMAP.md and SPRINTS.md for v0.50.281 currency
Both files had drifted significantly from the actual current state of the
project:
ROADMAP.md previously contained:
- A ~75-row 'sprint history' table that overlapped with CHANGELOG.md
- A 'Wave 2 Core' section frozen at Sprint 7 progress
- A 'Wave 2: Full CRUD' nested section repeating the same Wave 7 items
- A 'User Requested Features' table that double-counted the same shipped issues
- A 'Feature Parity Checklist' with many unchecked boxes that were actually shipped
(branch/fork via #465, LLM-generated session titles via auto_title_refresh_every,
workspace git detection at api/workspace.py:719, code execution and TTS
reclassified, etc.)
SPRINTS.md previously contained:
- 1159 lines of historical sprint plans (Sprints 11-26)
- Inline planning detail more appropriate for the private workspace
- Stale 'as of v0.50.245' header with 'next sprint Sprint 24' reference
- Track-A/B/C breakdowns from sprints already long-merged
Rewrite:
ROADMAP.md (now 397 lines, was 363):
- Status snapshot table at the top
- Architecture table reflecting current layout (api/ ~20k LOC, static/*.js ~26k LOC)
- Feature parity checklist reorganized by surface (chat / sessions / workspace /
cron / skills / memory / profiles / config / security / visual / voice /
mobile / i18n / gateway / MCP / distribution) with every line currently in
master correctly checked
- 'Forward work' section split into confirmed candidates (with tracking issue
numbers) vs deferred backlog vs intentionally not planned
- 'Sprint history' compressed to a single chronological theme table — per-version
detail explicitly redirects to CHANGELOG.md
- Versioning conventions documented
SPRINTS.md (now 165 lines, was 1159):
- Forward-looking only — no historical sprint plans (those live in CHANGELOG.md)
- Active sprint candidates table sourced from the sprint-candidate label
- Planning principles section (phase-0 fit assessment, salvage over absorb,
independent-review gate, per-PR release velocity, no feature creep mid-PR,
pre-release gate)
- Sprint shape table (typical 3-7 day sprint with phases)
- Out-of-scope section centralized
- Template for new sprint plans
Also updates TESTING.md test count 3990 → 3995 to match actual pytest collect.
No private workspace info, agent infra references, or contributor stipend
content. References to the maintainer's private planning notes are
acknowledged as 'in a private workspace' without further specifics — same
disclosure pattern most open-source projects use.
2026-05-03 17:39:53 +00:00
The maintainer's planning notes for each sprint live in the workspace repo (private), not in this file. This file is the public-facing planning shape.