Skip to content

Release v0.8.0 - #19

Merged
JDonaghy merged 12 commits into
mainfrom
develop
Apr 5, 2026
Merged

Release v0.8.0#19
JDonaghy merged 12 commits into
mainfrom
develop

Conversation

@JDonaghy

@JDonaghy JDonaghy commented Apr 5, 2026

Copy link
Copy Markdown
Owner

Summary

Features

  • Notification / progress indicator — spinner animation in per-window status bar during background operations (LSP install, project search/replace); bell icon on completion; auto-dismiss after 5s; click to clear
  • Layout toggle buttons — clickable sidebar/panel/menu toggle icons (󰘖/󰆍/󰍜) in per-window status bar with dim/active states
  • Explorer overhaul — diagnostic filtering, tree UX improvements, inline rename/new-file polish
  • Externalized highlight queries — tree-sitter highlight queries can now be overridden by extension manifests
  • Editor action menu button in tab bar with Close All/Others/Saved, language mode, word wrap
  • Richer syntax highlighting — expanded highlight queries for all 20 languages, 11 new Theme fields

Bug Fixes

  • TUI spell underlines bleeding into picker overlays
  • Marksman LSP status stuck on "initializing"
  • Spell underline misalignment in GTK (Pango font scale)
  • TUI rendering artifacts (clear on resize/popup dismiss)
  • Settings click, debug panel close, GTK command line, full-height TUI sidebar fixes
  • Explorer color/indicator improvements

Other

  • Documentation: vimcode.org and wiki links in README
  • Cursorline highlight, GTK tab bar polish, breadcrumb picker pre-selection

Test plan

  • cargo fmt — clean
  • cargo clippy -- -D warnings — zero warnings
  • cargo build — success
  • cargo test --no-fail-fast — 5,286 passed (10 pre-existing failures in command center debug/task tests, unrelated)
  • All 37 integration test crates pass
  • Flatpak CI — Cargo.lock changed; cargo-sources.json may need regeneration

🤖 Generated with Claude Code

JDonaghy and others added 12 commits April 1, 2026 22:04
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… line, full-height TUI sidebar

Bug fixes:
- Settings button unclickable when bottom panel open (TUI bar_height mismatch)
- Spell/diagnostic underlines misaligned on lines with tabs (char index vs visual column)
- No way to close debug output panel after DAP session ends (Ctrl+J toggle, ×
  close button on bottom panel tab bar, :DapBottomPanel close command)
- GTK command line drawn off-screen with per-window status lines
- Terminal > New Terminal menu does nothing in GTK (missing OpenTerminal action handler)
- GTK bottom panel click zones wrong with per-window status (hardcoded 2.0 status_h)
- Debug toolbar icons render as boxes in GTK (use text labels instead of glyphs)
- Bottom panel tab bar shows Terminal tab when no terminal is running

Layout changes:
- TUI sidebar now spans full height (activity bar + sidebar extend to bottom),
  matching GTK layout — status/command line sit under editor column only
- GTK status_h calculations account for window_status_line setting

Also includes: clickable status bar segments, LSP status indicator, line ending
detection/switching, per-window status lines, and other prior uncommitted work.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Force ratatui full redraw on terminal resize (reflow desync) and when
picker/folder-picker popups are dismissed (incremental diff miss).
Also removed already-fixed debug panel close bug from BUGS.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…overhaul

Session 245: Three major features plus numerous bug fixes.

Editor action menu (⋯) button:
- 8-item dropdown at right edge of each tab bar group (Close All/Others/
  Saved/Right/Left, Toggle Wrap, Change Language, Reveal in File Explorer)
- ContextMenuTarget::EditorActionMenu, close_all_tabs(), ActionBtnMap
- Both GTK (PopoverMenu) and TUI backends with full click handling
- Split-down icon fix (pushpin→caret-down), midline ellipsis ⋯

Richer tree-sitter highlight queries:
- 12 new Theme fields: control_flow, operator, punctuation, macro_call,
  attribute, lifetime, constant, escape, boolean, property, parameter, module
- All 6 built-in themes updated + VSCode JSON theme importer
- scope_color() expanded from 8 to 23 capture names
- All 20 language queries expanded with operators, punctuation, numbers,
  booleans, method calls, field access, parameters, escape sequences
- Keywords split into storage (@Keyword) vs control flow (@keyword.control)
- semantic_token_style() handles controlFlow modifier for keyword tokens
- Fixed tree-sitter reparse: always full parse (old tree without tree.edit()
  produced garbled byte offsets on incremental reparse)
- Insert mode now does immediate re-parse instead of 150ms debounce

Explorer color overhaul:
- Folders and files use same base color (removed explorer_dir_fg distinction)
- Git status + diagnostic colors propagate recursively to parent directories
- Modified files use git_modified color matching the M indicator
- GTK indicator column split into own TreeViewColumn (no longer clipped)

Additional fixes:
- GTK tab bar clip height (line_height→tab_row_height)
- gtk_editor_bottom() shared helper eliminates layout coordinate mismatches
- Divider drag excluded from tab bar regions (capture-phase + click handler)
- GTK menu dropdown padding (removed blank header row)
- LSP status no longer downgrades Running→Initializing when semantic tokens
  are temporarily empty (cleared on edit, re-requested asynchronously)
- Removed Pinned Tabs from roadmap
- 7 new tests (5282 total)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add infrastructure for extensions to provide custom tree-sitter highlight
queries, decoupling language-specific knowledge from the core.

- `highlights: Option<String>` field on `ExtensionManifest`
- `highlight_overrides: HashMap<String, String>` on Engine, populated from
  installed extensions at plugin init via `populate_highlight_overrides()`
- Override-aware Syntax constructors: `new_for_language_with_query()`,
  `new_from_path_with_overrides()`, `new_from_language_id_with_overrides()`
- Malformed override queries fall back to built-in queries gracefully
- `SyntaxLanguage::language_id()` for reverse language ID lookup
- All Syntax creation sites in engine thread the override map
- Built-in queries in `query_source()` remain as compile-time fallbacks
- 4 new tests (override used, malformed fallback, map lookup, round-trip)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove explorer toolbar (redundant with context menus)
- Right-click in empty explorer space → root context menu
- Inline rename improvements (pre-select filename, horizontal scroll)
- GTK rename disappears immediately (new bug report)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Explorer: remove toolbar buttons and TUI header row; right-click in
empty space opens root context menu; inline rename with stem
pre-selection, Ctrl-C/V/X/A, horizontal scroll; GTK name ellipsis +
fixed column sizing; case-insensitive sort setting (esci, default on).

Diagnostics: filter error-severity diagnostics from ignored sources
(ignore_error_sources) at storage time; refilter on registry update;
ext_refresh() at startup; initialization_options field on LspConfig for
per-server LSP init configuration.

Tree UX: explorer_file_fg theme field (muted grey); TUI indent guide
lines; aligned icon columns for dirs and files.

Fixes: GTK inline edit cancelled by indicator update (skip while
is_editing()); SIGSEGV on marker rows; popover focus steal; TUI context
menu from empty space; LineEnding::detect() byte-boundary crash on
multi-byte chars at 8KB mark.

10 new tests (5292 total).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…explorer improvements

- Fix LSP status indicator stuck on "Initializing" for servers without
  semantic tokens (e.g. marksman) by marking responsive on Initialized
  event and removing empty-result guards on hover/definition handlers
- Fix GTK spell underline misalignment (preserve Pango font_scale attrs)
- Fix spell checker not initializing from Settings sidebar/reload
- Fix inline rename test for macOS CI (cursor at stem end)
- Explorer diagnostic filtering, tree UX improvements
- GTK theme CSS improvements, hardcoded color cleanup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add clickable nerd-font icon segments (sidebar, panel, menu bar) to the
right side of each active window's status bar. Icons dim when their panel
is inactive. Menu bar toggle only shown in TUI (GTK menu bar is the
window title bar). GTK click detection overhauled: Pango-measured
StatusSegmentMap cache replaces char_width approximation for accurate
hit zones with variable-width nerd font glyphs. 4 new tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
set_cell()/set_cell_wide() only reset char/fg/bg but not cell.modifier
or cell.underline_color, so spell check underlines persisted through
the picker popup clear pass. Reset both fields in all cell-setting
functions. Also added remote editing research item to PLAN.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Spinner animation for in-progress background operations and bell icon
for completed ones, shown in the per-window status bar between Ln:Col
and layout toggles. Auto-dismiss after 5s, click bell to clear.

Wired up for LSP install, project search, and project replace.
9 new tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@JDonaghy
JDonaghy merged commit c43a91d into main Apr 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant