Skip to content

Release v0.5.0: CodeMirror 6 file editor, Push-to-Talk STT, session compaction, AI plans, named terminals & UI Enhancements!#31

Open
iptoux wants to merge 65 commits into
mainfrom
stage
Open

Release v0.5.0: CodeMirror 6 file editor, Push-to-Talk STT, session compaction, AI plans, named terminals & UI Enhancements!#31
iptoux wants to merge 65 commits into
mainfrom
stage

Conversation

@iptoux
Copy link
Copy Markdown
Contributor

@iptoux iptoux commented Jun 1, 2026

Summary

This PR merges the v0.5.0 release staging branch into main. It collects every change currently listed under ## [Unreleased] in CHANGELOG.md, plus the accompanying documentation, plan, and screenshot updates that ship with them.

The release is anchored by five headline areas:

  • CodeMirror 6 file editor — preview and edit now share one editor (read-only mount for preview, full editor for edit), removing the vendored highlight.js bundle and its heuristic fold model.
  • Push-to-Talk speech-to-text — local-first STT via a warm whisper.cpp engine with a managed model catalog (downloads with resume / progress / speed, sha256-verified, Use / Delete), and an optional cloud mode that reuses the existing OpenAI / OpenRouter STT providers. New collision state machine keeps PTT from clashing with the agent voice orb or TTS playback.
  • Session compaction & context-window tooling — context-window usage meter in the chat header, configurable tool-loop limit, and a Compact button plus auto-compact once the meter crosses a threshold.
  • AI-generated plans & tasks — new AI Plan / AI Tasks header buttons in the Plans panel, backed by the existing one-shot oneshot::complete_text provider path.
  • Named terminals & 10 new light themes — editable terminal name pool with per-slot overrides (the BLXCode Agent knows the names), plus ten new light themes (five brand counterparts and five custom designs) and a new "Claude Code" dark theme.

It also bundles a set of editor/UX refactors (unified Send/Stop toggle, merged thinking blocks, off-main-thread memory indexing), small bugfixes, a documentation pass (User + Developer guides, release notes, plans, screenshot rename), and the removal of the highlight.js dependency.


What's included

Added

  • Push-to-Talk speech-to-text (Settings → Voice → Push-to-Talk, new ShortcutAction::PushToTalk with default Ctrl+Shift+Space) — hold a key, speak, transcript is routed to agent composer / terminal / active input / clipboard; remember target at PTT start; live partial transcript (default on) via a throttled re-decode worker; VoiceRuntimeState collision machine (TTS = Stop / Pause / Block); backend under src-tauri/src/voice/{ptt,models,stt}; commands ptt_start/partial/finalize/cancel, voice_tts_playing, voice_agent_input_active. Closes feat(voice): Push-to-Talk speech-to-text (local whisper.cpp + cloud) #49.
  • Whisper model manager (in the Push-to-Talk section, local mode) — filterable catalog of whisper.cpp GGML weights (filter tabs: All / Standard / Quantized / Turbo / Large), per-model size, language, speed / accuracy ratings and "best for" hint, resumable downloads with live progress + transfer speed (MB/s), sha256-verified atomic install, Use / Delete per installed model, models stored under <app-data>/voice/models/<id>.bin. Local engine compiled behind the local-whisper cargo feature (default build is cloud-only). Covered by feat(voice): Push-to-Talk speech-to-text (local whisper.cpp + cloud) #49.
  • AI-generated plans & tasksAI Plan (LuSparkles) and AI Tasks (LuListPlus) header buttons open a dialog that turns a short prompt into a full Markdown plan via the agent tab's configured provider/model; reuses the existing one-shot oneshot::complete_text path; Skill-conformant system prompt; Save / Regenerate / Cancel; toggle for creating tasks alongside the plan (forced on in AI Tasks mode); shimmer loading animation; themed scrollable Markdown preview. Closes feat(plans): AI-generated plans & tasks dialog #48.
  • Configurable tool-loop limit — number field in Settings → Agent (range 1–500, default 36) replaces the hard-coded MAX_ROUNDS = 36; clamped on save and at the call site; drives both the OpenAI-compatible and Anthropic coordinator loops. Closes feat(agent): Configurable tool-loop limit (Settings → Agent) #32.
  • Context-window usage meterused / max · NN% bar in the chat header, color-shifts past 70% (warning) and 85% (danger); max resolved from the provider's model metadata with a static fallback table for direct providers; tracks the newest main-agent round's prompt size (true window occupancy), not the cumulative cost-sum, and excludes subagent rounds. Closes feat(agent): Context-window usage meter in chat header #33.
  • Session compaction — new Compact button in the chat header summarizes the conversation into a dense briefing and starts fresh from it; auto-compact (on by default, configurable threshold 50–95%) runs the same path automatically once occupancy crosses the threshold; fires only between turns, re-arms only after occupancy falls back below. Closes feat(agent): Session compaction with auto-compact threshold #34.
  • Plan card quick actions — collapsed plan card header gains Load into BLXCode Agent (LuBot), Rename (LuFilePenLine), and Remove (LuTrash2, danger) directly; hidden when the card is expanded; disabled on the PLANS.md index entry. Closes feat(plans): Plan card quick actions (Load / Rename / Remove) #35.
  • Ten new light themes — catalog grows from 20 to 30: Tokyo Night Light, Nord Light, GitHub Light, Ayu Light, Atom One Light, plus Winter Light, Paper Light, Alpine Light, Frost Light, Lilac Light; every theme ships a complete token set. Closes feat(themes): Ten new light themes (catalog 20 → 30) #36.
  • Collapsible plan status groups with descriptions — every status group in the Plans All view (Blocked / In progress / Pending / Completed / Cancelled / Empty) is now a toggle button with a chevron and a one-line description; PLANS.md index file is no longer listed as a plan card. Closes feat(plans): Collapsible plan status groups with descriptions #37.
  • Named terminalsSettings → Workspace → Terminal naming with a global toggle, editable name pool, and deterministic collision-free assignment keyed by slot_id; double-click the titlebar or use the right-click Rename / Reset name menu to override; harness.list_terminals returns name + namingMode, and harness.send_terminal_keys / send_agent_context / read_terminal_output accept a name argument (case-insensitive). Closes feat(terminal): Named terminals with editable name pool and per-slot overrides #38.
  • "Claude Code" dark theme — warm-charcoal dark theme with Claude's signature coral accent #d97757; replaces the near-redundant github-dark slot. Closes feat(themes): Claude Code dark theme (replaces github-dark) #39.
  • Rules, Skills, and Plans filtering — Rules and Skills panels share a category filter row, themed separator, and live search (filter by title, description, source/category metadata, and category selection); Plans panel mirrors the search with a field below the status filter tabs. Skills tab is now scoped to user/workspace skills under .agents/skills only (internal core harness skills are hidden from the UI but stay available to the agent backend). Closes feat(panels): Rules, Skills, and Plans filtering #50.

Changed

  • File preview now uses the same CodeMirror 6 editor as edit mode, mounted read-only — reading and editing are now visually identical (same syntax highlighting, line-number gutter, code folding, selection); the right-click handoff menu works in both modes. Closes refactor(editor): Unify file preview and edit mode on CodeMirror 6 #40.
  • Chat Send / Stop is now a single toggle button — flips between Send (sparkles) while idle and Stop (square, abort styling) while a turn is running. Closes refactor(chat): Unified Send / Stop toggle button #41.
  • Thinking blocks now merge into the following model-round line — when a finished Thinking block is immediately followed by a tool-bearing MODEL ROUND, the two collapse into one row; rounds without groupable tools, and still-streaming thinking, keep their standalone rows. Closes refactor(agent): Merge thinking blocks into following model-round line #42.
  • Architecture / memory indexing runs off the main thread — first-touch architecture rebuild and memory_rebuild_architecture / memory_lint_architecture are now async commands that offload CPU/IO-bound work to spawn_blocking, so the window keeps pumping events. Closes refactor(memory): Move architecture/memory indexing off the main thread #43.
  • Rules and skills share the same category model — each rule or skill can declare one optional category in Markdown frontmatter and its .agents/*/index.json entry (multiple entries can share the same category); legacy rule tags arrays are migrated at read time by taking the first tag as the category; rule and skill cards show the category in the same compact chip style in collapsed and expanded states. Closes refactor(meta): Rules and skills use category instead of tags #51.
  • Remote (SSH) settings redesigned as a master/detail view — saved presets now render as a grid of compact connection cards (RemoteConnectionCard) inside a framed section card, each showing the name, user@host:port, auth method, session-resume mode, a masked Stored / Not set secret badge, and the default remote directory (no secret values ever leave the backend). Clicking a card (or the new top-right Add connection button) opens a dedicated editor view (RemoteConnectionEditor) with a Back to connections header and a New connection / Edit connection title; Save and Delete return to the refreshed list. The 670-line module was split per the repo's component rules into mod.rs (orchestration + shared helpers) / connection_card.rs / connection_editor.rs with co-located, token-only CSS. Four new i18n keys (RemoteNewConnection, RemoteEditConnection, RemoteBackToList, RemoteCardEditHint) are translated across all 14 locales. Closes refactor(remote): Redesign SSH settings pane as master/detail view #54.

Fixed

Removed


Documentation

  • User docsdocs/user/voice.md Push-to-Talk section (Settings → Voice, model manager, target routing, collision behaviour, troubleshooting); docs/user/file-preview.md updates for the CodeMirror 6 editor; docs/user/workspaces.md Center-tabs section, terminal naming section; docs/user/plans.md AI Plan / AI Tasks dialog, quick actions, collapsible groups; docs/user/settings.md Agent pane updates (tool-loop limit, context meter, auto-compact); docs/user/getting-started.md boot loading screen; docs/user/appearance-themes.md new light themes + Claude Code dark; docs/user/remote.md Remote settings master/detail view + connection card / editor.
  • Developer docsdocs/developer/voice.md backend architecture, VoiceRuntimeState state machine, local-whisper feature flag, PttSettings envelope, command surface, event channel, model catalog + download pipeline, resume-range logic, key-chord migration.
  • Plans & release notes.agents/plans/voice-push-to-talk-stt.md (status: done), .agents/plans/voice-ptt-concurrency-error-review.md (follow-up), .agents/plans/PLANS.md index updated, docs/releases/v0.3.3.md finalized.
  • Screenshots — renamed 21 screenshot-*.png / Screenshot *.png files in docs/images/ to meaningful names; removed 9 md5-identical duplicates; references updated across README.md and docs/.

Notes

See CHANGELOG.md [Unreleased] for the full detailed change list. Companion plan files live under .agents/plans/. This PR resolves the v0.5.0 milestone (#32 through #49) and five follow-up [Unreleased] items filed in this release window (#50 through #54) — 23 issues in total.

@iptoux iptoux self-assigned this Jun 1, 2026
iptoux and others added 28 commits June 1, 2026 02:00
…ge meter, and session compaction functionality
…Plan Manager, Remote SSH File/Git Resume, Session Context Window Compaction, and V2 Roadmap. These changes streamline the project by eliminating outdated or redundant content, ensuring a more focused development effort moving forward.
- Added quick actions to collapsed plan cards for loading, renaming, and removing plans, improving accessibility and usability.
- Introduced collapsible plan status groups with descriptive headers to clarify the state of plans in the Plans panel.
- Implemented a new session compaction feature to summarize ongoing conversations, optimizing context usage.
- Updated internationalization keys for new features and ensured translations across all supported locales.
- Improved visual consistency of quick action buttons and fixed minor UI issues related to plan card displays.
- Introduced new light themes: Tokyo Night Light, Nord Light, GitHub Light, Ayu Light, One Light, Winter Light, Paper Light, Alpine Light, Frost Light, and Lilac Light.
- Updated the theme catalog with new theme configurations and preview colors.
- Added internationalization support for the new themes in Traditional Chinese.
- Enhanced CSS variables for each new theme to ensure proper styling and color schemes.
- Added a new terminal naming section in the workspace settings pane to allow users to toggle between slot numbers and friendly names.
- Implemented a mechanism to manage an editable name pool for terminal slots, allowing users to add, edit, and remove names.
- Updated the terminal display to show friendly names based on user preferences, with overrides for individual slots.
- Introduced a new module for terminal naming logic, including functions for resolving names and managing the name pool.
- Updated theme colors and styles to support the new terminal naming feature.
- Refactored related components to integrate the new naming functionality seamlessly.
- Implemented AI plan generation functionality with a new dialog in the Plans panel.
- Added localization support for new AI-related strings in Italian, Japanese, Korean, Polish, Portuguese, Russian, Simplified Chinese, and Traditional Chinese.
- Introduced a new `GeneratedPlan` struct to handle AI-generated plans.
- Created a new CSS file for styling the AI generation dialog.
- Updated the Tauri bridge to include a new `plan_generate_ai` function for generating plans based on user prompts.
- Enhanced the Plans panel to include buttons for generating AI plans and tasks, triggering the new dialog.
- Added error handling and user feedback for the AI generation process.
- Added a new Push-to-Talk section in BLXCode Settings for configuring voice input.
- Integrated local STT using `whisper.cpp` with options for model selection and quality presets.
- Enabled cloud STT options with existing providers, ensuring AWS Polly is not misused for transcription.
- Implemented target behavior for inserting transcripts into various inputs (Agent composer, terminal, clipboard).
- Added collision handling to prevent conflicts with existing STT/TTS features.
- Enhanced UI with settings for auto-submit, partial transcript display, and microphone device selection.
- Updated documentation and i18n keys for new features.
- Improved performance and error handling for STT operations.
- Added tests for settings serialization, target routing, and collision state machine.

docs: Update architecture and user documentation

- Revised architecture documentation to reflect async command handling for workspace indexing.
- Enhanced user documentation for agent harness, providers, appearance themes, file preview, plans, settings, and workspaces.
- Expanded theme options from 20 to 30, including new light themes and a warm-charcoal dark theme.
- Introduced named terminals feature for improved user experience in terminal management.
…cluding Code Architect, Code Explorer, Code Simplifier, Comment Analyzer, Rust Build Resolver, and Rust Reviewer
- Implemented the Push-to-Talk (PTT) settings section in the voice pane, allowing users to configure PTT options such as mode, quality, target, and behavior.
- Created a dedicated CSS file for the PTT section to style the UI components.
- Developed a PTT runtime module that handles the hold-to-talk functionality, including managing recording states and routing transcripts to various targets (agent composer, terminal, clipboard).
- Added a floating PTT indicator to display recording status and partial transcripts.
- Enhanced shortcut configuration to support PTT key bindings, allowing users to customize their PTT shortcut in the settings.
- Updated the workspace panel to handle PTT actions correctly, ensuring proper dispatching of shortcut actions.
… handling improvements

- Added Push-to-Talk (PTT) speech-to-text feature with local and cloud options.
- Introduced a concurrency review plan to ensure non-blocking operations on the main thread.
- Implemented error handling with user-friendly toast notifications for relevant errors.
- Updated documentation and changelog to reflect new features and improvements.
- Added various images for user documentation and settings.
@iptoux iptoux linked an issue Jun 1, 2026 that may be closed by this pull request
Maik Roland Damm added 4 commits June 1, 2026 23:16
- Enhanced CSS styles for model manager and push-to-talk sections for improved layout and responsiveness.
- Introduced a shared SettingsPaneHeader component for consistent header design across settings panes.
- Updated RemoteSettingsPane and ShortcutsSettingsPane to utilize the new SettingsPaneHeader component.
- Improved accessibility and usability of various input elements within the voice settings pane.
- Adjusted global styles to ensure proper layering and visibility of UI elements.
@iptoux
Copy link
Copy Markdown
Contributor Author

iptoux commented Jun 1, 2026

Latest implementations on stage (not yet linked in this PR)

The stage branch carries four changes from CHANGELOG.md[Unreleased] that are not covered by the Closes #N lines in this PR's description. The corresponding issues are open and already labeled done + pr-pending — i.e. they are part of the v0.5.0 scope in practice but are not linked here.

Issue CHANGELOG bucket Title
#50 Added Rules, Skills, and Plans filtering (shared category filter row, themed separator, live search)
#51 Changed Rules and skills use category instead of tags (frontmatter + index.json, legacy tags migrated)
#52 Fixed Rules panel descriptions and sidebar typography alignment (## Ziel paragraph + File Diff / Git Commits sizing)
#53 Fixed Push-to-Talk errors surfaced as localized toasts (start / busy-TTS / finalize / insertion)

All four are already merged on stage. If they should ride with this release, please add Closes #50, Closes #51, Closes #52, Closes #53 to the PR description (or push them as a follow-up); otherwise they will be left behind when this PR merges.

Details

#50 — Rules, Skills, and Plans filtering

  • Rules and Skills share the same category filter row, themed separator, and live search structure; entries are filtered by title, description, source/category metadata, and category selection.
  • Skills tab is now scoped to user/workspace skills under .agents/skills only (hides the internal core harness skills from the UI while keeping them available to the agent backend).
  • Plans panel mirrors the interaction with its own live search field below the status filter tabs, combining text search with the active status filter.

#51 — Rules and skills use category instead of tags

  • Each rule or skill can declare one optional category in Markdown frontmatter and in its .agents/*/index.json entry; multiple entries can share the same category.
  • Legacy rule tags arrays are migrated at read time by taking the first tag as the category.
  • Rule and skill cards show the category in the same compact chip style in both collapsed and expanded states.

#52 — Rules panel descriptions and sidebar typography

  • Rule summaries skip YAML frontmatter and now use the paragraph below ## Ziel instead of rendering the heading itself.
  • File Diff and Git Commits sidebar sections now use the same compact font sizing as the Project Files tree.

#53 — Push-to-Talk errors surfaced as localized toasts

  • Start failures show the existing microphone error.
  • Busy / TTS-collision rejects show the same message as the indicator hint.
  • Finalize failures map to no-model / model-load / generic transcription messages.
  • Failed transcript insertion into the clipboard, active terminal, or active text input now reports VoicePttInsertFailed.

@iptoux iptoux changed the title Release v0.5.0: CodeMirror 6 file editor, Push-to-Talk STT, session compaction, AI plans, named terminals & 10 new themes Release v0.5.0: CodeMirror 6 file editor, Push-to-Talk STT, session compaction, AI plans, named terminals & UI Enhancements! Jun 1, 2026
Maik Roland Damm added 3 commits June 2, 2026 00:49
- Split the RemoteSettingsPane into a master/detail layout with a list of connection cards and an editor for connection details.
- Implement connection card component for displaying saved connections.
- Add functionality to open the editor for creating or editing connections.
- Enhance CSS for improved layout and styling of the new components.
- Introduce shared helper functions for input handling and connection management.
@iptoux
Copy link
Copy Markdown
Contributor Author

iptoux commented Jun 1, 2026

Follow-up: new ticket filed and PR description updated

A new [Unreleased] entry landed on stage after the previous comment — the Remote (SSH) settings master/detail view redesign (commits 7017bfd + e32b349): saved presets now render as a grid of compact connection cards inside a framed section card, and clicking one (or Add connection) opens a dedicated editor view. The 670-line module was split per the repo's component rules into mod.rs / connection_card.rs / connection_editor.rs with co-located, token-only CSS, and four new i18n keys are translated across all 14 locales.

It did not have a tracking ticket, so I filed one:

PR description

While I was at it, I also wired up the four issues called out in the previous comment (#50, #51, #52, #53) so they auto-close on merge, and added a matching bullet for the new #54. The PR description now Closes-links all 23 issues in this release window:

Section Closes
Added #32, #33, #34, #35, #36, #37, #38, #39, #48, #49, #50
Changed #40, #41, #42, #43, #51, #54
Fixed #44, #45, #46, #52, #53
Removed #47

What's included gained five new bullets (one per added issue) in the right sections, and the Notes line now reads:

This PR resolves the v0.5.0 milestone (#32 through #49) and five follow-up [Unreleased] items filed in this release window (#50 through #54) — 23 issues in total.

Documentation also picked up a docs/user/remote.md line for the new connection card / editor view, matching the existing per-area user-doc convention.

No code changes — description and tracking only.

Maik Roland Damm and others added 17 commits June 2, 2026 01:19
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…vers and window controls

Mounts AppTitleBar at the App root (draggable through boot/EULA), moves the
sidebar/right-panel toggles into the bar, and offsets the app shell by the
new --titlebar-h. Tokens-only styling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Terminal cells publish their live header title (OSC/auto title, else slot
number or friendly name per the naming mode) into WorkbenchService keyed by
terminal_key. The breadcrumb appends the active workspace's focused terminal
title while the Terminals grid tab is active.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…mproved UI

- Added `git_commit_details` function to fetch detailed commit information including author, body, and file changes.
- Updated `GitCommitNode` and `GitCommitDetails` structs to include additional fields such as `short_oid`, `author_email`, and file change statistics.
- Refactored `GitGraphEntry` to support new commit details and improved rendering of commit rows with hover and selection states.
- Introduced `GitGraphLaneGutter` and `GitGraphExpandedFiles` components for better visual representation of commit lanes and expanded file changes.
- Enhanced CSS styles for the git graph to improve layout, spacing, and hover effects.
- Fixed minor issues in the notifications menu and remote connection card components.
…hangelog with detailed commit graph improvements
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment