Repository navigation
v2.3.0 — Navigation & Quick Actions - #7
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dca26e8b30
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ['taskmanager','Task Manager'], ['resmon','Resource Monitor'], ['devicemanager','Device Manager'], ['eventviewer','Event Viewer'], | ||
| ['services','Services'], ['diskmanagement','Disk Management'], ['computermanagement','Computer Management'], ['controlpanel','Control Panel'], | ||
| ['poweroptions','Power Options'], ['networkconnections','Network Connections'], ['updates','Windows Update'], ['defender','Windows Security'], | ||
| ['firewall','Windows Firewall'], ['bitlocker','BitLocker Settings'], ['startup','Startup Apps'], ['storage','Windows Storage Settings'], ['apps','Windows Installed Apps'] |
There was a problem hiding this comment.
Include all existing launchers and search aliases
The new catalog replaces the previous global-search map but omits supported entries and aliases. For example, system:open still supports registry, systeminfo, uac, network, advancednetwork, and about, while searches such as “registry”, “UAC”, “secure boot”, “public IP”, and “system context” previously navigated to the relevant center and now return no matches. Add the existing launchers and preserve the former center keywords so the command palette does not regress established searches.
Useful? React with 👍 / 👎.
| async function runNavigation(id) { | ||
| const item = navigation.byId.get(id); if (!item) return; | ||
| closeModal(); | ||
| if (item.kind === 'center') navigate(item.target); |
There was a problem hiding this comment.
Move focus after navigating away from the invoking view
When the palette is opened while focus is inside one center and the user selects a different center, closeModal() first restores focus to the invoking control and navigate() then hides that control's entire .view. The active element therefore remains inside hidden content, making keyboard focus appear lost; defer focus restoration for center navigation or explicitly focus the active sidebar item or destination heading after switching views.
Useful? React with 👍 / 👎.
| - name: Require explicit Stable confirmation | ||
| shell: pwsh | ||
| run: | | ||
| if ('${{ inputs.confirmation }}' -ne 'PUBLISH-v2.3.0') { |
There was a problem hiding this comment.
Pass the confirmation through an environment variable
The workflow-dispatch value is interpolated directly into PowerShell source before parsing, so a dispatcher can include a quote and additional PowerShell statements instead of merely failing the equality check. Because this runs before checkout, injected code can persist environment/PATH changes or files under the runner temp directory and poison the later Windows build whose artifacts are subsequently manifested, signed, and published without requiring access to the signing key. Bind the expression to a step environment variable and compare $env:... so the input is treated only as data.
Useful? React with 👍 / 👎.
| else if (item.kind === 'tool') { | ||
| try { const result = await api.openSystem(item.target); if (!result?.ok) { toast('Tool could not open',result.error || item.label); return; } recordNavigation(id); } | ||
| catch (error) { toast('Tool could not open',String(error?.message || error)); } |
There was a problem hiding this comment.
Reuse the normal post-launch handling for quick actions
When a Windows tool is opened from the command palette or the new pinned/recent controls, this direct api.openSystem path bypasses openWindows(), which provides the success toast and calls refreshActivity(). The main process records the launch, but the dashboard's Recent Activity remains stale until the user manually refreshes or performs another action, and these launchers provide no success feedback; route successful quick-action launches through the existing wrapper or perform the same post-launch updates here.
Useful? React with 👍 / 👎.
The existing search selected one predefined match and offered no quick-access memory. Ctrl+K now opens a searchable command palette for PowerTools centers and existing Windows tool launchers. Results support arrow/Home/End selection, Enter, mouse selection, and Alt+P pin/unpin. The dashboard shows up to 12 persistent pins and eight deduplicated recent tools. F1 opens a shortcut guide with a clear-recents control; Dashboard/Settings shortcuts leave text entry alone.
Navigation preferences store validated allowlisted tool IDs locally, recover from corrupt data, and tolerate failed writes. Tool launchers use the existing bridge and do not execute system changes. Existing modal focus containment and updater trust controls remain intact.
Validation passed: syntax; navigation preference/search tests; dialog focus tests; update verification; transaction/rollback; publisher policy for v2.2.0, v2.2.1 and v2.3.0; whitespace checks. Actual-page DOM smoke checks passed for Ctrl+K, filtering, pin storage, empty results, Enter navigation, recents, clearing history, help and typing-safe shortcuts. These DOM checks are not pixel-layout or native Windows acceptance. Windows launches, high-DPI visuals, installer/portable packaging and upgrade acceptance remain pending, so this PR is draft.
Version: 2.3.0. Additive local preference key pt.navigation.v1; no migration of existing configuration. README retains v2.2.0 as the published Stable release. Release notes/changelog mark v2.3.0 unreleased. Manual signed publication workflow is prepared with existing safeguards; no release has been published.