Add shared recent tables state
This commit is contained in:
@@ -52,6 +52,7 @@ It is intentionally implementation-focused:
|
||||
| 2026-03-21 | Post-P1 fix 4 | Completed | Added early theme bootstrapping in `App.razor` and `theme.js` so the stored mode is applied before hydration and remains visible after refresh. |
|
||||
| 2026-03-21 | P2.1 | Completed | Added canonical `/tools/diagnostics` and `/tools/api` routes with dedicated tooling page components, extracted the diagnostics and API content into shared tool components, and updated the `Tools` landing page to link to the new route structure. |
|
||||
| 2026-03-21 | P2.2 | Completed | Replaced the old `/diagnostics` and `/api` pages with lightweight compatibility routes that reuse a shared redirect component, preserve query strings and fragments, and replace browser history while forwarding into the canonical `Tools` routes. |
|
||||
| 2026-03-21 | P2.3 | Completed | Added a shared `RecentTablesState` service backed by browser storage, centralized the recents storage key, and started recording successful table visits from the `Tables` page so later omnibox and rail work has real shared data. |
|
||||
|
||||
### Lessons Learned
|
||||
|
||||
@@ -73,6 +74,7 @@ It is intentionally implementation-focused:
|
||||
- Persisted theme state should be applied before Blazor hydrates, not only after layout initialization. Otherwise refresh can look broken even when storage writes succeed.
|
||||
- For route migration in Blazor, extracting the destination UI into shared components keeps canonical routes and temporary compatibility routes from drifting while the redirect phase is still pending.
|
||||
- Compatibility routes should stay declarative and shared. A single redirect component is enough for route forwarding and avoids copy-pasted `NavigationManager` lifecycle logic in page files.
|
||||
- Shared browser-backed state becomes more useful once one real page writes to it immediately. Recording recents from `Tables` now keeps later omnibox work from being blocked on synthetic placeholder data.
|
||||
|
||||
## Target Outcomes
|
||||
|
||||
@@ -362,7 +364,7 @@ Establish the shared shell, tokens, typography, and theme system that every dest
|
||||
| --- | --- | --- |
|
||||
| `P2.1` | Completed | Canonical `Tools` child routes now exist, backed by dedicated route pages and shared tooling content components. |
|
||||
| `P2.2` | Completed | Old `/diagnostics` and `/api` routes now forward into the canonical `Tools` routes with shared redirect behavior. |
|
||||
| `P2.3` | Pending | Recent tables state has not been introduced yet. |
|
||||
| `P2.3` | Completed | Recent critical-table visits now persist through a shared app-state service and are recorded from the `Tables` page. |
|
||||
| `P2.4` | Pending | Pinned tables state has not been introduced yet. |
|
||||
| `P2.5` | Pending | Table-context URL parsing and serialization still needs a shared model. |
|
||||
| `P2.6` | Pending | The shell omnibox is still a placeholder trigger. |
|
||||
|
||||
Reference in New Issue
Block a user