Skip to content

Merge rewrite/web-foundation → master: ship the 33 post-cutover commits to prod#821

Merged
MrCoder merged 34 commits into
masterfrom
chore/merge-rewrite-web-foundation
Jun 18, 2026
Merged

Merge rewrite/web-foundation → master: ship the 33 post-cutover commits to prod#821
MrCoder merged 34 commits into
masterfrom
chore/merge-rewrite-web-foundation

Conversation

@MrCoder

@MrCoder MrCoder commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Why

The production cutover (release-20260610105534) shipped master @ 28e370b — a 2026-06-10 snapshot of the rewrite. But rewrite/web-foundation continued past that merge and was 33 commits ahead, so a large body of fixes/features never reached prod. This merges the branch into master so the actual current rewrite ships, instead of cherry-picking fixes one at a time.

What this brings to prod (highlights of the 33 commits)

Fixes

  • 6f62604 Safari/WebKit preview re-render — acked render delivery so live edits + page switches update the diagram (prod currently shows the bug)
  • 6f9cd27 multi-page reconcile — page 2 no longer renders page 1
  • 87ae78d LSP worker guarded behind Worker-availability (no editor crash)
  • b5212a3 split New button caret height (h-8→ matches Button h-9)
  • 1b02156 official ZenUML header logo · 2295c1c favicon · 5751479 anonymous-upgrade sign-in flow

Features

  • a21030c editor-as-landing — bare / resumes last/sample; hub → ?view=diagrams (+ pre/post telemetry)
  • 73ab92c dark-ink theme for all modals + renderer header
  • Report-a-bug FAB + modal (app-wide) · 5226132 mobile native-SVG render · 0286893 signed-out Pricing link · edae7b6 @zenuml/core LSP in CM6

Reconciliation with master-only work

master already carries my reactive cherry-picks (favicon/logo/PWA/help.html). Merge conflicts were only web/index.html (kept master's superset: svg favicon + manifest + theme) and HomeView.tsx (kept the branch's buttonClassName for the caret fix; BrandLogo auto-merged). The copy-legacy-static-pages plugin + PWA manifest + icons + the production-build guards all survive.

Validation (local, merged tree)

  • pnpm -C web typecheck → clean
  • pnpm -C web test1075 passed, 1 skipped, 0 failed
  • pnpm -C web build → ok; dist has the app + help.html/privacy/EULA + favicon/manifest/icons
  • playwright test production-build --project=chromium5/5 (favicon link, manifest valid + icons 200, help/privacy/EULA 200)
  • Scope: web/ + docs/ only — legacy src/, functions, firebase config untouched

The staging E2E gate (full suite vs staging) runs on merge before any prod release.

MrCoder and others added 30 commits June 11, 2026 14:01
… — derive it from buttonClassName(primary) so the two segments can't drift
…esume last/sample), hub demoted to ?view=diagrams; pre/post telemetry not A/B (15 weekly actives)
…eMode flip, 3 telemetry events, test re-ground, live screenshot)
…ams; bare / resumes last diagram or seeds sample via existing boot chain
…} AND {landing-param} — goHome now marks the landing ref consumed so source stays a clean signal; regression test added
…in editor now; keep tolerant hub fallback but trim its probe to 1s (rare path)
…ub — a permanent ref under-counted return visits (browser Back), an asymmetric bias against the hub in the pre/post metric; mutation-tested regression added
…ng the picker — hub 'Start something new' cards called onBrowseTemplates (forcing a 2nd template selection); now wire real templates to handleCreateAndOpen; modal onSelect DRY'd to the same handler
…— replace the placeholder two-participant glyph with the #outline-zenuml artwork (shared BrandLogo component)
…surface (P3/P4) and dismiss the login dialog on auth success (P5) — DialogContent shell, 14 modals' inner tokens, Select dropdown, RendererHeader/page-tabs all flip onlight→ondark/paper→ink; diagram canvas + template previews stay paper; AppRoot effect closes login modal on null→user
…c-sync, diagnostics

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eck — new Worker() ran unconditionally on editor mount, throwing 'Worker is not defined' in jsdom and crashing the editor (49 unit tests); createZenumlLspClient now returns null without Worker so the editor degrades to no-LSP (extensions already no-op on null)
… users — anonymous visitors have no account menu (which carries Upgrade/My Plan), so add a quiet ghost Pricing link left of Sign in, gated by paymentEnabled like the app-menu item
…ML on mobile — the fixed-px HTML diagram overflows narrow viewports; svgMode (isMobile && !fullscreen) drives renderMode:'svg' → window.zenuml.renderToSvg into #svg-mount with width:100%/height:auto so the full diagram shows by default
…d on load — migrateToPages trusted a stale persisted mirror, so a multi-page item whose item.js was out of sync with currentPageId rendered the wrong page (page 2 showed page 1); pages[] is the source of truth, so re-derive js/css from the current page (fallback to first page if currentPageId is invalid)
…ers on Safari/WebKit — WebKit silently drops a single fire-and-forget render postMessage to the srcdoc iframe under prod-build timing, so live edits + page switches never updated the diagram (page 2 showed page 1); each render now carries a token the iframe echoes in 'rendered', and PreviewFrame re-posts unacked renders (Chromium acks first try)
… checkout — handleUpgrade silently closed the modal for signed-out users (never opened sign-in, never reached Paddle); now it captures the chosen plan, opens the login dialog, and fires openCheckout for that plan on auth success
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@MrCoder MrCoder merged commit 2e44a01 into master Jun 18, 2026
6 checks passed
@MrCoder MrCoder deleted the chore/merge-rewrite-web-foundation branch June 18, 2026 01:19
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