Conversation
…acOS File manager now follows the same detect -> pin -> custom-template pattern Terminal already had: expanded programs.filemanager candidates (Directory Opus, Total Commander, Explorer++, Q-Dir, FreeCommander on Windows; several Linux file managers), a Settings picker, and a filemanager_template escape hatch for one that needs more than a bare path arg. Terminal's Auto now also honors an explicit "Console Host" choice in Windows' own default-terminal setting (HKCU\Console\%%Startup) instead of forcing wt.exe open against it, falling back to running the shell directly when nothing else resolves. Settings' Terminal/File manager/Shell pickers, and the Run command shell picker, now name the concrete program or shell Auto/Default actually resolves to instead of a vague "first available" / "default" label - pick_terminal_binary and default_shell are extracted so the preview uses the exact same resolution logic as the real thing, not an approximation. Settings layout: fix the custom-template input overflowing its row and pushing Shell onto the next line; Terminal/Shell/File manager columns are now equal-width and share the row. Remove macOS-specific code, config, and docs entirely - this project never targets it. Add CLAUDE.md recording that directive plus commands and architecture notes for future sessions. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Enter on the repo list now always opens the action menu; Tab/Ctrl+Enter are unbound there entirely rather than kept as a redundant alias - one less key to reach for, arrows + Enter cover the whole flow now. Removed the default-action feature completely rather than just routing around it: Action.default, RuleAction.default, UniversalConfig.default, UniversalPatch.default, and UniversalStatus.default are gone from the Rust side, the matching fields from the frontend types, universal.default from default_config.yaml and the rules_template.yaml scaffold, the "default" badge in Settings' config trace viewer, and the docs describing any of it (README's keybinding table and footer hints, rules-engine.md's field reference and recipe). This is a breaking change for any rules.yaml that set universal.default or default: true - it's silently ignored now. Also fixes a real bug found along the way: RunCommand's Escape handler didn't stop event propagation, so a single Escape press bubbled to the window-level handler after the mode had already flipped to "action-menu", which then applied its own Escape handling on the same keystroke and stepped back a second time straight to the repo list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Unchecking "Index installed apps" only gated the backend enumeration before - the > scope itself stayed reachable (typing >, the placeholder hint, the dedicated app-launcher hotkey) and just showed nothing, which reads as broken rather than off. - App.svelte: appScope now also requires the live apps.enabled flag, so typing > does nothing and the placeholder drops its "> for apps" hint when disabled. - lib.rs: the app-launcher hotkey is no longer registered at startup when apps.enabled is false. - commands.rs: save_config now tracks the hotkey's actual registered state as (accelerator set) && (feature enabled) instead of just comparing accelerator strings, so toggling the checkbox alone - without touching the hotkey itself - correctly claims/releases it. - Settings.svelte: added a note under the checkbox explaining the hotkey won't work either when it's off, and cursor-pointer on all three checkbox+label pairs in Settings (they never had it). Also fixes a real bug found while verifying this: saveAndRescanApps() - the "Save settings and re-enumerate installed apps now" button right next to the checkbox - persisted to disk and re-registered the hotkey correctly but never called onsaved(), so App.svelte's cached copy of apps.enabled never refreshed and the > gating stuck at whatever it was on last load. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Settings now tracks a snapshot of every field Save actually persists (everything except hotkey/apps_hotkey/autostart, which already commit immediately on their own) and compares it against the last-loaded/saved values to compute a dirty flag: - Save is disabled until something's actually changed; a Cancel button appears next to it once dirty and reverts every field to the last-saved config without a round-trip (just re-runs applyConfig against the config object saved from the last load/save). - Leaving while dirty is blocked from every exit path, not just the back arrow - Escape and the mouse back-button call backToList() directly in App.svelte, bypassing this component entirely, so the dirty flag is surfaced to the parent via an ondirtychange callback and the blocked attempt triggers a brief shake on the Save/Cancel bar via an exported nudge() method (bind:this) instead of silently discarding edits. - persist() now captures saveConfig()'s authoritative response and reapplies it via applyConfig(), so the dirty baseline always reflects what the server actually persisted rather than trusting local state. Also added cursor-pointer to every dropdown across Settings and RunCommand, and fixed two clippy::unnecessary_closures the apps-hotkey gating change upstream of this introduced (bool::then -> then_some). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
dev→mainfor the next release (4 commits sincev2026.911.1).What ships
a8cbea2) — detect →pin → custom-template, mirroring the existing Terminal picker. Expanded
programs.filemanagercandidates (Directory Opus, Total Commander,Explorer++, Q-Dir, FreeCommander on Windows; several Linux file managers).
Terminal's
Autonow also honors an explicit "Console Host" choice inWindows' own default-terminal setting instead of forcing
wt.exeopenagainst it. Settings' Terminal/File manager/Shell pickers, and the Run
command shell picker, now name the concrete program/shell
Auto/Defaultactually resolves to instead of a vague "first available" label.
macOS support is removed entirely — this project never targets it;
see the new
CLAUDE.mdfor the standing directive and architecture notes.c6ec872) — Tab andCtrl+Enter are unbound on the repo list; arrows + Enter now cover the
whole flow. The
default-action config concept (universal.default,RuleAction.default, the Settings "default" badge) is removed from theschema entirely rather than just routed around — a breaking change for
any
rules.yamlsetting it. Also fixes a real bug:RunCommand's Escapehandler didn't stop event propagation, so one Escape press could bubble
to the window-level handler and step back twice, landing on the repo
list instead of the action menu.
>scope (b153916)— unchecking it used to only gate the backend enumeration; typing
>orpressing the app-launcher hotkey still worked, just showed nothing. Both
are now fully inert when disabled, and the hotkey is claimed/released to
match. Also fixes a bug where the "Save settings and re-enumerate
installed apps now" button never told the frontend to refresh its cached
apps.enabled, so the fix above could appear not to take effect.79345d4) — Save isdisabled until something's changed; a Cancel button appears next to it
once dirty and reverts every field locally. Leaving while dirty is
blocked from every exit path (← button, Esc, the mouse back-button), with
a brief shake on the Save/Cancel bar instead of silently discarding edits.
Not addressed here
GitHub's Dependabot flagged one moderate-severity advisory on this push —
unrelated to this branch's changes, not investigated as part of this PR.