Skip to content

release: promote v1.0.0 to main (bfcache logout fix + version bump) - #16

Merged
xdroberto merged 6 commits into
mainfrom
develop
Jul 8, 2026
Merged

release: promote v1.0.0 to main (bfcache logout fix + version bump)#16
xdroberto merged 6 commits into
mainfrom
develop

Conversation

@xdroberto

Copy link
Copy Markdown
Owner

Summary

Promueve developmain para liberar v1.0.0. El árbol es limpio (merge-tree reporta 0 conflictos) y produce la unión de ambas ramas:

  • fix(dashboard): recarga páginas restauradas por bfcache para que logout + Back no muestren un dashboard stale.
  • fix(auth): hard-navigate en logout para que Back no pueda navegar el dashboard cacheado.
  • chore(release): bump de versión a 1.0.0 (la versión intencional de Nova; main arrastraba 2.2.0 residual del template upstream).
  • main conserva su feature propia ya mergeada por PR feat(auth): premium aurora background + trust badges on login #15 (feat(auth): aurora background + trust badges en login) — el merge no la pierde.

Nota de estado (divergencia)

main y develop habían divergido: main tenía login-polish (PR #15) que develop no; develop tiene el fix de bfcache + v1.0.0 que main no. Este merge reconcilia ambas. Tras mergear conviene un back-merge main → develop para resincronizar.

Deploy

Push a main dispara deploy.yml: build de imagen → GHCR → SCP/SSH deploy al VPS. Este merge despliega v1.0.0 a producción.

Test plan

  • CI verde en develop (quality + e2e) — run previo exitoso
  • CI verde en main (último push)
  • merge-tree sin conflictos
  • CI del PR verde (commits + quality + e2e) antes de mergear
  • Deploy a VPS exitoso tras el merge

Generated with Claude Code

xdroberto and others added 6 commits July 8, 2026 13:03
…ow a stale dashboard

After logout, pressing Back restored the authenticated dashboard from the
browser's back/forward cache (bfcache). The session is already invalidated
server-side (any interaction 401s -> redirect), so this is a defense-in-depth
+ UX gap, not an auth bypass.

Root cause: dashboard pages are dynamically rendered (cookies/headers) and Next
owns their Cache-Control — it serves `no-cache, must-revalidate`, not
`no-store`. Only `no-store` disables bfcache in Chromium/Firefox, and neither
next.config headers() nor the edge proxy can override a dynamic route's
Cache-Control (verified empirically — both are dropped/replaced).

Fix: a client BfcacheGuard in the dashboard layout reloads any page restored
from bfcache (`pageshow` with `persisted`); the reload re-hits the auth check
and a logged-out visitor is redirected to /login (MDN's documented pattern for
this exact problem). Scoped to the dashboard; the static marketing/landing
stays cacheable (Phase 3 LCP work untouched).

e2e: pins that a logged-out reload of the dashboard lands on /login (real
bfcache Back is verified manually — headless bfcache is unreliable to trigger
and window.location.reload can't be spied in Chromium).
Verified: biome, next build (31 routes), full e2e 12/12.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PA9EzergAZ12Dy1QBqx5kp
…shboard

Follow-up to the BfcacheGuard: that alone was insufficient. The logout handlers
did `await signOut(); router.push("/login")` — a SOFT (client-side) navigation.
A soft nav leaves the dashboard SPA and Next's client Router Cache alive, so
after logout, Back restored the still-mounted dashboard and its prefetched
authenticated RSC — the logged-out user could not just VIEW it but navigate and
interact via cached soft navigations (no server round-trip, so the dead session
was never re-checked).

Fix: `window.location.href = "/login"` — a hard navigation that tears down the
SPA and discards the Router Cache. Combined with the BfcacheGuard (browser
bfcache restore → reload) and the edge proxy (no cookie → /login), Back after
logout now lands on /login through every path. Dropped the now-unused useRouter.

e2e: the auth flow test now presses Back after logout and asserts /login (it
reproduced the bug on the soft-nav version). Full suite 12/12; build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PA9EzergAZ12Dy1QBqx5kp
Nova Analytics v1.0.0. Aligns the package version (inherited 2.2.0 from the
arhamkhnz template) with the v1.0.0 release tag. Version field only — no
dependency or lockfile-format changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PA9EzergAZ12Dy1QBqx5kp
fix: logout + Back no longer views/interacts with the dashboard (hard-nav + bfcache guard)
Focus the product on its coherent analytics story ahead of the review:
- Hide off-brand sidebar modules (Academy, Logistics, Infrastructure) and the
  Legacy V1 dashboards (personal-finance template demos) from the nav; the routes
  remain in the build (a production build would drop them) — noted in limitations.
- Remove the consumer 'Credit score updated' card from the Usage & Billing page.
- Rename the sidebar item 'Finance' -> 'Usage & Billing' to match the page title.
- Drop the footer 'Security'/'Docs' placeholder links (both pointed at /login).

Nav/copy only; no secondary-page content rewritten.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HNyEN55Dz175WWRhrJidAc
…fix false claims

Pre-submission audit gate (Phase 6): a 10-dimension multi-agent audit with
adversarial verification against the PRD, docs, diagrams and process files.
0 critical findings; the product substantially meets the PRD.

Integrity fixes (false claims):
- README: SEED_PASSWORD is required/fail-closed, not 'optional'.
- SUBMISSION + ROADMAP: Lighthouse numbers are the real landing-v2 figures
  (desktop 100, mobile ~89-90, CLS 0); '94 mobile' was the retired v1 landing.
- fail2ban count reconciled to one figure (9 banned / 96 attempts, first hour).

Canonical state made current (ROADMAP/BRAIN/SESSION-LOG): landing v2, coherent
dashboard metrics, login-polish, the bfcache fix and the v1.0.0 release (the
state files had stalled at 'Phase 6 delivery docs').

- Reconcile the two divergent design-spec copies into one canonical PRD
  (aurora-tech v2 palette + repo-steward role; sections 7/8 updated to reality).
- Add COST-REPORT.md (model-strategist output, promised in section 7) and
  AUDIT-PRE-SUBMISSION.md (closes the Phase-6 audit gate).
- Document, don't chase: CD-not-gated-on-CI, e2e-against-dev, diagram
  simplifications, and residual template scaffolding in limitations.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HNyEN55Dz175WWRhrJidAc
@xdroberto
xdroberto merged commit 18553b5 into main Jul 8, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant