You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Navigation stack: Ctrl+− / Ctrl+Shift+− back and forward through tab history #52
Maintain a linear navigation history of tabs and top-level views visited. Ctrl+−
navigates backward and Ctrl+Shift+− (Ctrl+_) navigates forward, analogous to
browser back/forward or Visual Studio Ctrl+−/Ctrl+Shift+−.
Checked: Commit 94354f0 (Fix #52) on the features branch — files Phantom.Workspaces/Services/Navigation/INavigationHistoryService.cs, NavigationHistoryService.cs, NavigationEntry.cs, MainWindowViewModel.cs, MainWindow.axaml, and test file Phantom.Workspaces.Tests/NavigationStackTests.cs. Also checked the full features branch tree for any subsequent commits adding the missing pieces.
Found:
INavigationHistoryService with Push, GoBack, GoForward, CanGoBack, CanGoForward
NavigationHistoryService: linear list, max 200 entries, deduplication, truncation on new push
_navigatingViaHistory guard in MainWindowViewModel
Key bindings Ctrl+OemMinus / Ctrl+Shift+OemMinus wired in MainWindow.axaml
Push calls from OpenTabAsync, top-level view selection, and F7/F8 notification navigation
Tests for basic Push, GoBack, GoForward, ClearsForwardHistory behaviour
Missing:behaviour not implemented + tests missing
TabDescriptor abstract base class — Phantom.Workspaces/Services/Navigation/TabDescriptor.cs with virtual OpenAsync(mainWindowViewModel) is absent. No EntityTabDescriptor, AgentSessionTabDescriptor, or BrowserTabDescriptor subclasses exist in the Navigation folder.
NavigationEntry.TabDescriptor? field — the current record is sealed record NavigationEntry(string TabId, string? WorkspacePaneId) with no TabDescriptor? for closed-tab reopening.
Closed-tab reopen in ActivateTabById — when a tab is not found in any pane, ActivateTabById silently returns without calling TabDescriptor.OpenAsync. The acceptance criterion "Navigating to a closed tab reopens it; deleted entities are skipped" is not satisfied.
Tests for closed-tab reopen — NavigationStackTests.cs has no test for the reopen-on-closed-tab or skip-deleted-entity paths.
Activity
Fix #52: navigation stack with Ctrl+−/Ctrl+Shift+−
JoshuaRowePhantom commentedon Jun 30, 2026
Verification failed
Checked: Commit
94354f0(Fix #52) on thefeaturesbranch — filesPhantom.Workspaces/Services/Navigation/INavigationHistoryService.cs,NavigationHistoryService.cs,NavigationEntry.cs,MainWindowViewModel.cs,MainWindow.axaml, and test filePhantom.Workspaces.Tests/NavigationStackTests.cs. Also checked the fullfeaturesbranch tree for any subsequent commits adding the missing pieces.Found:
INavigationHistoryServicewithPush,GoBack,GoForward,CanGoBack,CanGoForwardNavigationHistoryService: linear list, max 200 entries, deduplication, truncation on new push_navigatingViaHistoryguard inMainWindowViewModelCtrl+OemMinus/Ctrl+Shift+OemMinuswired inMainWindow.axamlOpenTabAsync, top-level view selection, and F7/F8 notification navigationMissing:
behaviour not implemented+tests missingTabDescriptorabstract base class —Phantom.Workspaces/Services/Navigation/TabDescriptor.cswith virtualOpenAsync(mainWindowViewModel)is absent. NoEntityTabDescriptor,AgentSessionTabDescriptor, orBrowserTabDescriptorsubclasses exist in the Navigation folder.NavigationEntry.TabDescriptor?field — the current record issealed record NavigationEntry(string TabId, string? WorkspacePaneId)with noTabDescriptor?for closed-tab reopening.ActivateTabById— when a tab is not found in any pane,ActivateTabByIdsilently returns without callingTabDescriptor.OpenAsync. The acceptance criterion "Navigating to a closed tab reopens it; deleted entities are skipped" is not satisfied.NavigationStackTests.cshas no test for the reopen-on-closed-tab or skip-deleted-entity paths.