Releases: Smart-AI-Memory/attune-gui
v0.8.0 — MCP server + widen attune-rag pin
Released 2026-05-25 · PyPI
Bundles the MCP server work (Phases 1–5, completed across PRs #49–#56) with the spec-status parser fix (PR #57), the living-docs regen automation Phase 1 (PRs #60, #61, #62, #63), the home interpreter snapshot improvement (PR #59), the stacked-rebase README note (PR #58), and a routine attune-rag cap widen to admit the freshly-released 0.2.0. Triggered by the cap widen — the rest had been queued on main waiting for a release.
Highlights
- MCP server. New
attune-gui-mcpconsole script with 6 tools (5 read-mostly:gui_list_specs,gui_get_spec,gui_get_spec_status,gui_list_living_docs,gui_get_living_doc; plus 1 write:gui_set_spec_status). 30+ tests acrosstest_mcp_tools.pyandtest_mcp_integration.py. See the new "MCP integration" section in the README for the.mcp.jsonsnippet. - Spec-status parser now accepts both
**Status:**and**Status**:emphasis styles (real specs use the former overwhelmingly). - attune-rag pin widen. Core pin raised from
>=0.1.22,<0.2to>=0.1.22,<0.3to unblock installs alongside attune-rag 0.2.0 (first SemVer-binding cut, purely additive — no code adaptation needed).
Full changelog: CHANGELOG.md
v0.7.1
Maintenance release rolling up PRs #36–#46. See CHANGELOG.md for the full entry.
Highlights
- Templates page staleness aligned with
attune-author status— switched from file-mtime to content-drift viacheck_workspace_staleness. Domain narrows tofresh/stale/unknown;very-staleretired end-to-end (route, UI, KPIs, tests). Closes the templates-staleness-alignment spec. _editor_dep.py503-guard removed —attune-rag>=0.1.18now ships the editor submodule on PyPI, so the guard is dead code. Six lazyrequire_editor_submodule(...)callsites moved to top-level imports.- Pin bumps:
attune-author[ai]>=0.14.0,<0.15(required forcheck_workspace_staleness),attune-rag>=0.1.22,<0.2.
Install
```
pip install attune-gui==0.7.1
```
v0.6.2 — help.* commands proxy through attune-author orchestration (D3)
Highlights
Phase D3 of the architecture-realignment spec, gui side. The three help.* executors moved to attune-author 0.9.1; this release wires the gui to dispatch through them via plain _proxy_command(...).
help.lookup,help.search,help.listnow register as proxyCommandSpecs- None needed workspace pre-resolution or post-dispatch invalidation, so no
_author_proxyspecialization _help_enginefactory removed fromattune_gui.commands(no production callers after this PR; lazy-import variant lives in attune-author)- Net diff: +107 / −275
Dependencies
Pins attune-author[ai]>=0.9.1,<0.10 (was >=0.9.0,<0.10). Pairs with attune-author v0.9.1.
Architecture-realignment progress
A · B1 · B2 · C · D1 · D2 · D3 done. D4 (gui sweep — public pipeline_for(corpus_id) to close finding #5, unified error envelope to close finding #7) is the final phase.
v0.6.1 — author.* commands proxy through attune-author orchestration (D2)
Highlights
Phase D2 of the architecture-realignment spec, gui side. The six author.* executors moved to attune-author 0.9.0; this release wires the gui to dispatch through them via attune_author.orchestration.run_command(...).
init,status,maintain,lookup,regen,setupnow register as proxyCommandSpecs- Two host-only behaviours stay in the gui via the new
_author_proxy(name, *, pre_resolve_workspace=False, invalidate_after=False)helper:pre_resolve_workspace=True—_resolve_project_pathsruns before dispatch so the workspace fallback (which the orchestration runtime intentionally lacks) still worksinvalidate_after=True—attune_gui.routes.rag.invalidate(project_root)runs after dispatch (Phase D4 will replace this with publicpipeline_for(corpus_id))
commands.pyshrinks by ~480 lines;test_commands.pyshrinks by ~440 lines (executor coverage now lives in attune-author's tests)- Net diff: +213 / −951
Dependencies
Pins attune-author[ai]>=0.9.0,<0.10 (was >=0.8.1,<0.9). Pairs with attune-author v0.9.0.
Architecture-realignment progress
A · B1 · B2 · C · D1 · D2 done · D3 (help.* 3 commands) · D4 (gui sweep — pipeline_for + error envelope) remaining.
v0.6.0 — rag.corpus-info dispatch through attune-author orchestration (D1)
Highlights
- Phase D1 of architecture-realignment, gui side.
rag.corpus-infonow dispatches throughattune_author.orchestration.run_command(...). The gui keeps a thin proxyCommandSpec;/api/commandsand the job runner are unchanged for clients. - New helpers in
sidecar/attune_gui/commands.py:_proxy_command(name)— mirrors an attune-author orchestration spec into a guiCommandSpec._orchestration_dispatcher(name)— closure that converts guiJobContext→ orchestrationJobContextand unwrapsRunResult.output.
- Phases D2 (
author.*) and D3 (help.*) will reuse both helpers.
Dependencies
- Bumped
attune-author[ai]constraint from>=0.5.0,<0.6to>=0.8.1,<0.9(orchestration scaffold + the movedrag.corpus-infocommand). Pairs with attune-author v0.8.1.
Architecture-realignment progress
A · B1 · B2 · C · D1 done · D2 (author.* 6 commands) · D3 (help.* 3 commands) · D4 (gui sweep — pipeline_for + error envelope) remaining.
v0.5.0 — Legacy React UI retired
Changelog
All notable changes to attune-gui are documented here.
The format is based on Keep a Changelog.
[0.5.0] — 2026-05-04
Removed — legacy React UI
The React/Vite UI has been retired. The Cowork dashboard at / is now
the only surface. This was always the plan from the cowork-dashboard
spec; 0.4.0 ran the two side-by-side to give you time to vet the new
one. With everything verified in production, the bundled React assets
are dead weight.
What goes away:
/legacy/URL route — anyone with a bookmark gets a 404.ui/source tree (React + Vite + node_modules) — no morenpm install
to build the wheel.sidecar/attune_gui/static/— the built React assets that shipped in
the wheel. Wheel size drops dramatically as a result.build_hooks.py— the hatchling hook that drovenpm run build.scripts/dev.sh— the dual-runner script.- The "Legacy UI ↗" link in the dashboard sidebar.
What stays the same:
- All JSON APIs (
/api/*) — including the old ones that powered the
React UI. Any external scripts hitting those continue to work. - The Cowork dashboard at
/— same routes, same look. - Tests (124, all passing) — none of them hit the legacy mount.
If you need the old React UI for any reason, install attune-gui==0.4.0.
Changed
pyproject.tomldescription updated; sdist no longer includesui/*
orbuild_hooks.py.
[0.4.0] — 2026-05-04
Added — Spec authoring
The Specs page is no longer read-only. You can now create features, add
phases as you go, and transition status — all from the dashboard.
- + New spec button on
/dashboard/specsopens a slug input that
bootstrapsspecs/<slug>/requirements.mdfrom the workspace's
TEMPLATE.md(falls back to a minimal stub if no template is found). - + Design / + Tasks inline buttons appear on each spec row at the
appropriate moment, with prerequisite ordering enforced server-side
(no design without requirements; no tasks without design). - Phase status dropdown in the Preview/Edit panel for any spec file —
rewrites the**Status**:line atomically (draft → in-review → approved → complete). - New JSON APIs (all under
/api/cowork/):GET /specs/template— fetch the canonical templatePOST /specs— create a new feature directoryPOST /specs/{feature}/phase— bootstrap design or tasksPUT /specs/{feature}/{phase}/status— transition status
- Slug validation: lowercase letters, digits, dashes; max 63 chars.
- 19 new tests covering the authoring flow, validation, and ordering rules.
Suite total: 124 tests, all passing.
Fixed
- Summaries page no longer shows a red error banner when
summaries.jsondoesn't exist yet. A missing file is the expected state
on a fresh workspace (the polish pass hasn't run), so the page now
renders a centered empty-state card with the exact
attune-author polishcommand to generate it. Genuine errors (corrupt
JSON, real I/O failures) still surface the danger banner.
[0.3.0] — 2026-05-04
Added — Cowork dashboard
A server-rendered Jinja2 dashboard mounted at /, with the React/Vite UI
preserved at /legacy/ for fallback. Sidebar nav: Health · Templates ·
Specs · Summaries · Living Docs · Commands · Jobs.
- New JSON APIs under
/api/cowork/:GET /layers—importlib.metadataprobe per attune layerGET /corpus— workspace + template count + summaries presenceGET /specs— feature spec list with inferred phase + statusGET /templates— template list with mtime staleness + manual flagGET /files/raw/{root}/{path}— read raw file (returns content + manual)PUT /files/raw/{root}/{path}— atomic writeGET /files/rendered/{root}/{path}— markdown → HTML fragmentPOST /files/pin/{root}/{path}— toggle themanual: truefrontmatter flag
- New HTML page routes (Jinja2 templates):
/dashboard(Health),/dashboard/templates,/dashboard/specs,
/dashboard/summaries,/dashboard/preview,/dashboard/living-docs,
/dashboard/commands,/dashboard/jobs
- Per-page CSS in
static_cw/style.cssmatching the design tokens from the
approvedcowork-dashboardspec.
Added — Sidecar quality of life
.envauto-loading at sidecar start. Searches./,<repo-root>/,
~/.attune-gui/,~/.attune/and loadsKEY=valuelines without
overwriting real existing env vars. Empty/whitespace existing values are
treated as unset and replaced. Supportsexport KEY=value, quoted
values, and#comments. Nopython-dotenvdependency added.- Anthropic SDK pulled in via
attune-author[ai]extra so
author.regenandauthor.maintainjobs work out of the box.
Added — Jobs page UX
- Per-feature progress in
author.maintain(was previously silent during
multi-minute runs, looking "stuck"). - "Last output" column on
/dashboard/jobsshows the latest output line. - Cancel button on running/pending rows (calls
DELETE /api/jobs/{id}). - Auto-refresh every 4s while a job is running, paused when the tab is hidden.
Added — Tests
- 55 new tests covering: dotenv loader, cowork health, cowork specs (incl.
resolver), cowork templates (incl. resolver + staleness thresholds),
cowork files (read/write/render/pin/path-traversal), cowork pages. - Suite total: 105 tests, all passing.
Changed
pyproject.tomldescription rewritten to reflect the dual-UI reality.attune-authordependency now uses the[ai]extra so the Anthropic
SDK is installed by default.app.pymounts the legacy React UI at/legacy/instead of/.
Internals
- Token header for mutating routes corrected in the new dashboard from
X-Attune-Client-TokentoX-Attune-Client(matchessecurity.py). - File API URL prefixes restructured (
/raw/,/rendered/,/pin/)
so the greedy:pathconverter cannot swallow action suffixes.
[0.2.1]
- Filesystem directory picker for path fields.
[0.2.0]
- Setup help + Regenerate templates commands.
[0.1.0]
- Initial release: React + Vite UI, sidecar with Commands and Living Docs
modes, profile switching, RAG quality gates.
v0.4.0 — Spec authoring
Changelog
All notable changes to attune-gui are documented here.
The format is based on Keep a Changelog.
[0.4.0] — 2026-05-04
Added — Spec authoring
The Specs page is no longer read-only. You can now create features, add
phases as you go, and transition status — all from the dashboard.
- + New spec button on
/dashboard/specsopens a slug input that
bootstrapsspecs/<slug>/requirements.mdfrom the workspace's
TEMPLATE.md(falls back to a minimal stub if no template is found). - + Design / + Tasks inline buttons appear on each spec row at the
appropriate moment, with prerequisite ordering enforced server-side
(no design without requirements; no tasks without design). - Phase status dropdown in the Preview/Edit panel for any spec file —
rewrites the**Status**:line atomically (draft → in-review → approved → complete). - New JSON APIs (all under
/api/cowork/):GET /specs/template— fetch the canonical templatePOST /specs— create a new feature directoryPOST /specs/{feature}/phase— bootstrap design or tasksPUT /specs/{feature}/{phase}/status— transition status
- Slug validation: lowercase letters, digits, dashes; max 63 chars.
- 19 new tests covering the authoring flow, validation, and ordering rules.
Suite total: 124 tests, all passing.
Fixed
- Summaries page no longer shows a red error banner when
summaries.jsondoesn't exist yet. A missing file is the expected state
on a fresh workspace (the polish pass hasn't run), so the page now
renders a centered empty-state card with the exact
attune-author polishcommand to generate it. Genuine errors (corrupt
JSON, real I/O failures) still surface the danger banner.
[0.3.0] — 2026-05-04
Added — Cowork dashboard
A server-rendered Jinja2 dashboard mounted at /, with the React/Vite UI
preserved at /legacy/ for fallback. Sidebar nav: Health · Templates ·
Specs · Summaries · Living Docs · Commands · Jobs.
- New JSON APIs under
/api/cowork/:GET /layers—importlib.metadataprobe per attune layerGET /corpus— workspace + template count + summaries presenceGET /specs— feature spec list with inferred phase + statusGET /templates— template list with mtime staleness + manual flagGET /files/raw/{root}/{path}— read raw file (returns content + manual)PUT /files/raw/{root}/{path}— atomic writeGET /files/rendered/{root}/{path}— markdown → HTML fragmentPOST /files/pin/{root}/{path}— toggle themanual: truefrontmatter flag
- New HTML page routes (Jinja2 templates):
/dashboard(Health),/dashboard/templates,/dashboard/specs,
/dashboard/summaries,/dashboard/preview,/dashboard/living-docs,
/dashboard/commands,/dashboard/jobs
- Per-page CSS in
static_cw/style.cssmatching the design tokens from the
approvedcowork-dashboardspec.
Added — Sidecar quality of life
.envauto-loading at sidecar start. Searches./,<repo-root>/,
~/.attune-gui/,~/.attune/and loadsKEY=valuelines without
overwriting real existing env vars. Empty/whitespace existing values are
treated as unset and replaced. Supportsexport KEY=value, quoted
values, and#comments. Nopython-dotenvdependency added.- Anthropic SDK pulled in via
attune-author[ai]extra so
author.regenandauthor.maintainjobs work out of the box.
Added — Jobs page UX
- Per-feature progress in
author.maintain(was previously silent during
multi-minute runs, looking "stuck"). - "Last output" column on
/dashboard/jobsshows the latest output line. - Cancel button on running/pending rows (calls
DELETE /api/jobs/{id}). - Auto-refresh every 4s while a job is running, paused when the tab is hidden.
Added — Tests
- 55 new tests covering: dotenv loader, cowork health, cowork specs (incl.
resolver), cowork templates (incl. resolver + staleness thresholds),
cowork files (read/write/render/pin/path-traversal), cowork pages. - Suite total: 105 tests, all passing.
Changed
pyproject.tomldescription rewritten to reflect the dual-UI reality.attune-authordependency now uses the[ai]extra so the Anthropic
SDK is installed by default.app.pymounts the legacy React UI at/legacy/instead of/.
Internals
- Token header for mutating routes corrected in the new dashboard from
X-Attune-Client-TokentoX-Attune-Client(matchessecurity.py). - File API URL prefixes restructured (
/raw/,/rendered/,/pin/)
so the greedy:pathconverter cannot swallow action suffixes.
[0.2.1]
- Filesystem directory picker for path fields.
[0.2.0]
- Setup help + Regenerate templates commands.
[0.1.0]
- Initial release: React + Vite UI, sidecar with Commands and Living Docs
modes, profile switching, RAG quality gates.
0.2.1 — filesystem directory picker
What's new
- Directory picker — Browse… button on all path fields opens a modal with real filesystem navigation (breadcrumbs, folder list, ↑ parent). No more typing paths by hand.
GET /api/fs/browse— server-side directory listing; hidden dirs suppressed except.attuneand.help.- Inline path validation — red border immediately if you type a relative path (must start with
/or~). - Friendly command group labels — Search & Query / Author Docs / Help Lookup instead of raw domain keys.