Skip to content

fix(ui): restore gittensory_ legacy localStorage keys destroyed by rebrand (#7782) - #7860

Closed
RealDiligent wants to merge 1 commit into
JSONbored:mainfrom
RealDiligent:fix/rebrand-legacy-keys-7782
Closed

fix(ui): restore gittensory_ legacy localStorage keys destroyed by rebrand (#7782)#7860
RealDiligent wants to merge 1 commit into
JSONbored:mainfrom
RealDiligent:fix/rebrand-legacy-keys-7782

Conversation

@RealDiligent

Copy link
Copy Markdown
Contributor

Summary

  • Restore LEGACY_DISMISS_KEY in onboarding-preview-card.tsx to gittensory_maintainer_onboarding_preview_dismissed (was incorrectly identical to the current loopover_ key after the blanket rename)
  • Restore the notification opt-in legacy key in notification-readiness-card.tsx to gittensory_notification_opt_in
  • Update branding-drift baseline for these intentional historical key literals
  • Regression tests: pre-rebrand localStorage values migrate forward and restore dismissed/opt-in state

Closes #7782

Test plan

  • UI vitest: onboarding-preview-card + notification-readiness-card (11 passed)
  • npm run branding-drift:check passes
  • CI validate-code + validate-tests green

Made with Cursor

@RealDiligent
RealDiligent requested a review from JSONbored as a code owner July 21, 2026 15:15
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

…brand (JSONbored#7782)

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.40%. Comparing base (fa21f3e) to head (1f3fe7e).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #7860   +/-   ##
=======================================
  Coverage   91.40%   91.40%           
=======================================
  Files         730      730           
  Lines       74763    74763           
  Branches    22815    22816    +1     
=======================================
  Hits        68335    68335           
  Misses       5385     5385           
  Partials     1043     1043           
Flag Coverage Δ
shard-1 56.25% <ø> (-0.01%) ⬇️
shard-2 51.12% <ø> (-0.01%) ⬇️
shard-3 53.85% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 21, 2026
@loopover-orb

loopover-orb Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Tip

✅ LoopOver review result - approve/merge recommended

Review updated: 2026-07-21 15:34:50 UTC

5 files · 1 AI reviewer · no blockers · readiness 98/100 · CI green · clean

✅ Suggested Action - Approve/Merge

  • safe to merge

Review summary
This PR restores two legacy localStorage key fallbacks (`gittensory_maintainer_onboarding_preview_dismissed` and `gittensory_notification_opt_in`) that a prior blanket rebrand rename had incorrectly collapsed to the same value as the current key, silently breaking the migration path for pre-rebrand users. The fix is correctly traced to the source: `useLocalStorage`'s legacyKey param needs to differ from the primary key to have any migration effect, and both restored literals now match the branding-drift baseline bumps. The added regression tests seed the real pre-rebrand key in localStorage and assert the value migrates forward to the new key, which is a legitimate test of the actual migration path rather than a fabricated scenario.

Nits — 3 non-blocking
  • The comments in both component files are nearly identical boilerplate explaining the same historical incident twice; could be trimmed or reference a shared doc, but this is purely stylistic.
  • onboarding-preview-card.test.tsx and notification-readiness-card.test.tsx don't test the case where BOTH the legacy and current keys are present simultaneously, though this is an edge case unlikely to occur in practice.
  • Consider consolidating the near-duplicate migration-rationale comment into a single reference point (e.g. the useLocalStorage hook's own docstring) to avoid drift if the story needs updating again.

Decision drivers

  • ✅ Code review — No blockers (1 reviewer)
  • ✅ Gate result — Passing (No configured blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #7782
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 387 registered-repo PR(s), 179 merged, 36 issue(s).
Contributor context ✅ Confirmed Gittensor contributor RealDiligent; Gittensor profile; 387 PR(s), 36 issue(s).
Improvement ✅ Minor risk: clean · value: minor · LLM: moderate
Linked issue satisfaction

Addressed
The PR restores both LEGACY_DISMISS_KEY and the notification opt-in legacy key to their gittensory_ prefixed values, matching the correct pattern from try-it.tsx, and adds regression tests verifying legacy-key values migrate forward correctly in both components.

Review context
  • Author: RealDiligent
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: Python, JavaScript, Ruby, Svelte, TypeScript, Markdown, MDX
  • Official Gittensor activity: 387 PR(s), 36 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Keep the PR focused and include validation evidence before maintainer review.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before /
before /
after /
after /
/ mobile before / (mobile)
before / (mobile)
after / (mobile)
after / (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy.

Scroll preview
Route Before (production) After (this PR's preview)
/ before / (scroll)
before / (scroll)
after / (scroll)
after / (scroll)

A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show.

🟩 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 LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@loopover-orb

loopover-orb Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

This pull request changes UI/visual code but its screenshot evidence is incomplete. Every required viewport × theme combination needs its own before/after image pair in a labeled table row (e.g. "Desktop · Light | before | after"). Still missing: Desktop · Dark, Tablet · Dark, Mobile · Dark.

Please resubmit with the remaining rows filled in.

See https://github.com/JSONbored/loopover/blob/main/.claude/skills/contributing-to-loopover/SKILL.md for the exact format and examples. This is an automated maintenance action.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Two rebrand legacy-key fallbacks were silently destroyed by the gittensory->loopover blanket rename

1 participant