feat(ui): dual-read browser localStorage keys during the rebrand - #5405
Conversation
Renames 6 client-side localStorage keys from gittensory.* to loopover.* (workbench tab, saved run views, onboarding checklist state, notification opt-in, the API playground session token, and the maintainer onboarding-preview dismiss flag), with a one-time migration fallback: read the new key, fall back to the legacy key if absent, and write the value forward so every later read hits the new key directly. Renaming these outright would have silently reset every returning visitor's saved state -- most notably logging out anyone with a saved session token. useLocalStorage (used by 4 of the 6 sites) gains an optional legacyKey parameter implementing this pattern once; the two call sites using raw localStorage directly (the API playground token, and the one dismiss-flag site that already used the hook) get the same treatment inline / via the hook respectively. Also fixes a real user-facing "Gittensory" brand-string left in the onboarding preview card's rendered heading, caught while touching this file for its dismiss-key migration.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 6e160b8 | Commit Preview URL Branch Preview URL |
Jul 12 2026, 05:00 PM |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-12 19:03:17 UTC
⏸️ Suggested Action - Manual Review
Review summary Blockers
Nits — 7 non-blocking
Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Summary
Renames 6 client-side localStorage keys from
gittensory.*toloopover.*(workbench tab, saved run views, onboarding checklist state, notification opt-in, the API playground session token, and the maintainer onboarding-preview dismiss flag), with a one-time migration: read the new key, fall back to the legacy key if absent, and write the value forward so every later read hits the new key directly.Renaming these outright would have silently reset every returning visitor's saved state -- most notably logging out anyone with a saved session token.
useLocalStorage(used by 4 of the 6 sites) gains an optionallegacyKeyparameter implementing this pattern once; the two sites using rawlocalStoragedirectly get the same treatment (one inline intry-it.tsx, refactored into a small exported/testablereadStoredSessionTokenfunction since the component itself is heavier to render in a test than the migration logic warrants).Also fixes a real user-facing "Gittensory" brand string left in the onboarding preview card's rendered heading ("Here's what Gittensory would have flagged" → "...LoopOver..."), caught while touching this file for its dismiss-key migration.
Test plan
useLocalStorage'slegacyKeymigration: reads new-key-present, legacy-fallback-with-forward-migration, neither-present, no-legacyKey-given (unchanged behavior), and write-through-after-migrationtry-it.tsx's extractedreadStoredSessionToken: same three read-path casesonboarding-preview-card.test.tsx's existing dismiss-persistence test for the renamed heading texttest:cigate green end-to-end (typecheck, ui:lint, ui:test, ui:build)gittensory.*/gittensory_*key-string reference in the diff is exactly the intended legacy-fallback constant, nothing elseCloses #5337.