Skip to content

v1.5.2: forum SSR in-process GraphQL, Architect profile, aurora background#76

Merged
ABCrimson merged 5 commits into
mainfrom
fix/v1.5.2-followups
Jul 11, 2026
Merged

v1.5.2: forum SSR in-process GraphQL, Architect profile, aurora background#76
ABCrimson merged 5 commits into
mainfrom
fix/v1.5.2-followups

Conversation

@ABCrimson

Copy link
Copy Markdown
Owner

Follow-ups to v1.5.1.

Fixed

  • Forum post SSR streamed "Post not found": SSR self-fetched GraphQL via the deployment-protected VERCEL_URL (proven 401). SSR + RSC clients now execute in-process via SchemaLink over the API package's executable schema — client bundles proven free of server code (package.json imports browser condition), verified under webpack prod AND Turbopack dev (streamed HTML contains title/body/comments). generateMetadata reads via Prisma (no view double-count); double title suffix fixed.
  • Admin profile showed Level 1: the account was never actually promoted (role was USER — the only 'admins' were seed fixtures). New idempotent db:promote-admin (already run — owner is sole ADMIN); display tier now derives from role: ADMIN renders Level 101 — Architect everywhere on the profile, XP stays honest.
  • Sign-in skip link double-locale (/en/en/...).

Changed

  • Forum background: the grain was a real bug (noise tile stretched viewport-wide — no background-size); now tiles correctly. Color shift rebuilt as a three-blob OKLCH aurora (typed @property hue animation, compositor-only, reduced-motion safe, zero JS/Framer Motion).
  • ROADMAP: competitive backlog filled from the July analysis.

Verification

Gate green (21/21 build, 10/10 test). SSR verified with raw HTML fetches on local prod build + Turbopack dev. Prod Playwright pass post-deploy.

🤖 Generated with Claude Code

ABCrimson and others added 5 commits July 10, 2026 18:54
…protected self-fetch

Streaming SSR fetched its own /api/graphql via https://$VERCEL_URL, which
sits behind Vercel Deployment Protection and returns a 401 challenge;
errorPolicy 'all' turned that into a null post and the page streamed the
'Post not found' branch (client-side rendering recovered same-origin,
masking it). Proven with a live 401 from the deployment URL vs 200 from
nextcalc.io.

- SSR branch of makeClient terminates in SchemaLink over the executable
  schema from @nextcalc/api/server with an anonymous per-operation context
  (prisma + fresh dataloaders) — the SSE route's in-process pattern
- Browser bundles proven clean via a package.json imports entry with a
  browser-conditioned stub (#graphql/ssr-schema-link); grep of client
  chunks shows zero schema/prisma markers (webpack prod + Turbopack dev
  both verified serving full post HTML)
- rsc-client.ts had the same self-fetch defect class - now SchemaLink with
  an authenticated context
- generateMetadata reads the post via Prisma directly (avoids the
  resolver's view-count side effect) and no longer doubles the
  '| NextCalc Pro' title suffix
- apps/web/package.json also carries the 1.5.2 version bump

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dmin

The production account was never actually ADMIN (role USER since OAuth
sign-up; the only admin rows were seed fixtures that never ran in prod),
so the avatar-picker gate and any L101 display could not apply. The
'beyond the cap' look pre-v1.5.0 was purely the avatar image.

- New idempotent packages/database/scripts/promote-admin.ts (db:promote-admin);
  executed: the owner is now the sole ADMIN
- Display tier now derives from role: resolveDisplayLevel() renders ADMIN
  as Level 101 - Architect across hero badge, tier text, stats tile, and
  fallback icon; XP stays honest, nothing granted to non-admins
- role added to the UserProfile query (codegen regenerated) and threaded
  through the profile types; 6 new unit tests

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…color shift

The 'grain' was a defect: the SVG noise tile had no background-size, so a
256px feTurbulence texture stretched across the whole viewport as blotchy
mottling (worst on dark). It now tiles at 256px, blends soft-light, and
runs at half opacity in dark mode.

Color shift rebuilt as an aurora system: three gradient blobs drifting on
40/60/90s periods, hue animated inside the OKLCH color channel via typed
@Property custom properties (perceptually uniform - no hue-rotate
lightness warp), compositor-only motion, prefers-reduced-motion respected.
The component drops Framer Motion and client-side JS entirely.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
callbackUrl is already a fully-localized path; the locale-aware Link
prepended the locale again (/en/en/...). Plain next/link for this href.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Versions 1.5.1 -> 1.5.2 across all 10 workspaces; CHANGELOG [1.5.2];
  wiki pointers
- docs/ROADMAP.md: the Competitive Feature Roadmap placeholder replaced
  with the ranked 10-item backlog from the July 2026 analysis vs Desmos /
  Wolfram Alpha / GeoGebra / Symbolab (implicit curves, data+regression,
  inequality shading, free step-by-step expansion, practice generator,
  GPU Lab, distributions, Verify Solution, embed API, classroom-lite)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
nextcalc-pro Ready Ready Preview, Comment Jul 11, 2026 12:00am

@ABCrimson
ABCrimson merged commit 1df8163 into main Jul 11, 2026
6 of 7 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