Conversation
Owner
oso95
commented
Mar 18, 2026
- Fix fnm compatible issue
- Support various coloring in the terminal
- Session persistent toggle option
- Fix screen freeze on notifications
- Hotkey improvements
- Session mapping improvement
- More bugs are fixed with performance enahncement!
Add impl_shortcuts_recording module with format_keystroke_as_binding() and normalise_key_name() helpers. Wire recording capture into handle_key_down: intercepts keypresses when recording_shortcut is Some, saves the binding or cancels on Escape. Guards the general Escape-closes- settings path so it does not fire while recording is active.
Add focused_shortcut_row field to SettingsPage and impl_shortcuts_nav module with navigate_shortcuts_focus(). Tab/ArrowDown/ArrowUp move row focus; Enter/Space starts recording for the focused row. Focus highlight rendered as a subtle background on the active row in the shortcuts table. State is preserved across background settings reloads.
…keybindings Add ToggleTaskBoard and QuickSwitch GPUI actions covering the two entries in default_keybindings() that previously had no registered action and were silently skipped in keybindings_to_gpui_list. - ToggleTaskBoard (Ctrl+B): calls toggle_task_board(); replaces old hardcoded secondary-b → ToggleSidebar binding, which conflicted with the default keymap - QuickSwitch (Ctrl+K): calls toggle_sidebar() as a stand-in (no dedicated session-picker UI exists yet, matching original manual Ctrl+K behaviour) - ToggleSidebar rebinds to secondary-e (Ctrl+E / Cmd+E) to free Ctrl+B - Both actions get global fallbacks in register_actions and .on_action wiring in WorkspaceView's render setup - keybindings_to_gpui_list now covers toggle_task_board and quick_switch so user-edited bindings take effect via live reload - Two new unit tests confirm the mappings survive the filter
- Restore ToggleSidebar to Ctrl+B; move ToggleTaskBoard to Ctrl+T - Remove quick_switch from user-visible settings (no real UI yet) - Expose all app actions as rebindable in settings panel - Extract handle_settings_key helper from handle_key_down - Clear focused_shortcut_row on settings category switch
- Add Ctrl guard in handle_key_down for Windows defence-in-depth - Re-register full binding set on save to prevent stale bindings - Clear focused_shortcut_row when Escape cancels recording - Document Enter/Space deliberate swallow when no row focused - Restore quick_switch to default_keybindings and live-reload list - Fix handle_toggle_task_board doc comment (Cmd+B -> Ctrl+T / Cmd+T) - Guard empty key in binding_to_gpui_string to prevent KeyBinding panic - Add precondition doc and debug_assert to handle_settings_key - Rename _cx to cx in settings save closure - Remove meaningless canary test - Rename and clarify test_format_keystroke_ctrl_n_windows
- Block PTY text input via replace_text_in_range when settings is open - Clear focused_shortcut_row on successful shortcut recording - Sync focused_shortcut_row with mouse-click recording in settings panel - Validate preserved recording state after background settings reload - Add sync test between default_gpui_keybindings and default_keybindings
- Clear keymap before re-registering on save (prevents unbounded growth) - Sync KeybindingManager::with_defaults with new key assignments - Add PageUp/Down/Home/End/Insert/F1-F12 to normalise_key_name - Cache sorted shortcut keys on SettingsPage; remove per-frame sort
- Remove -NoProfile from PowerShell so user PATH additions load - Add display_offset() getter on TerminalView - Snap scroll to bottom when within one viewport of live view
- Add missing EventBus trait import in gpui.rs so subscribe() compiles - Fix double-wrapping of cx.listener() in toast button callbacks - Persist expected_sha256 in StagedUpdateState for re-verification after restart - Block restart when sessions are actively working (with TODO for modal) - Validate artifact filenames contain only safe characters
When user clicks "Later" on an update toast, the staged update now auto-applies on next app launch instead of showing the toast again. Also removes the working-session guard on "Restart Now" — if the user clicks it, just proceed.
Move status dot from pane header into session tabs with three configurable styles (dot, badge, glow) and flash animation for NeedsAttention/ResponseReady states.
Disambiguate tab animation from StatusIndicator::animated, specify settings access path, use TabStatusDecoration struct for glow style, clarify timer-driven animation approach, and fix pattern references.
…tification dispatch
Piggyback on the 250ms maintenance polling loop instead of adding a new background timer. Explicit threading model for all UI work.
Replaces NotificationManager with NotificationHandle on the UI thread. All blocking Toast::show() (Windows) and osascript (macOS) calls now execute on a dedicated notification-actor thread via std::sync::mpsc. Fixes UI freeze on Windows Surface when two sessions hit permission prompts simultaneously.
- Log warnings on all swallowed file removal and state save errors - Use $TMPDIR with /tmp fallback for macOS DMG mount point - Derive Windows exe name from current_exe() instead of hardcoding - Warn when SHA256 verification is skipped due to missing hash - Log warning when browser open command fails
The test expected normalize_keybinding_display("Ctrl+N") to return
"Cmd+N" on macOS, but Ctrl and Cmd are distinct physical keys.
parse_binding correctly distinguishes them, and format_binding only
maps the cmd modifier to "Cmd" on macOS. Ctrl stays as Ctrl on all
platforms.
Changed the macOS assertion to test "Cmd+N" → "Cmd+N" (passthrough)
instead of the incorrect "Ctrl+N" → "Cmd+N" conversion.
6-task plan with verification matrix per task. Addresses reviewer feedback: pulse modulus alignment, existing test fixup, GPUI element test caveats, explicit tab restructuring.
# Conflicts: # crates/codirigent-ui/src/workspace/gpui.rs
Add configurable tab status indicator style with 'dot' default. Supports 'dot', 'badge', and 'glow' variants.
TabStatusDecoration struct, status_color mapping, pulse logic, and render_tab_status function for dot/badge/glow styles.
Piggybacks on existing 250ms maintenance loop. No new timer.
Each tab now displays a status dot/badge/glow based on the tab_status_style setting. Pulse animation for NeedsAttention and ResponseReady on background tabs.
Users can choose between dot, badge, and glow styles.
Users don't need a post-update toast with release notes — they just got the update. Also removes unused thiserror dependency from codirigent-updater.
Eliminate color duplication by delegating to the canonical StatusIndicator::for_status() mapping instead of repeating hex values in tab_status_render.
The status field was only consumed by the now-removed header dot. Tab status rendering reads directly from session state instead.
Replace binary 1.0/0.4 step with a 6-step curve [1.0, 0.85, 0.55, 0.4, 0.55, 0.85] for smoother pulsing.
Merge feature/tab-status-indicator into integration/all-features. Resolved conflicts in gpui.rs and impl_output_polling.rs by keeping both auto-update fields and pulse_counter additions.
When a shell emits OSC 7 after `cd`, the session manager's working_directory was updated in memory but save_state_to_disk was never called, so the new CWD was lost on app restart. Add the missing save call (already debounced) after CWD change detection.
…edless_return Replace all Mutex::lock().unwrap() calls in codirigent-updater production code with .unwrap_or_else(|p| p.into_inner()) to match codebase convention and pass the CI unwrap gate. Also remove needless return in platform/mod.rs that fails Windows clippy. Add .superpowers/ and docs/superpowers/ to .gitignore.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.