Merge rewrite/web-foundation → master: ship the 33 post-cutover commits to prod#821
Merged
Conversation
… — 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
…nt) for editor-landing pre/post validation
…} 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>
…re/merge-rewrite-web-foundation # Conflicts: # web/index.html # web/src/components/home/HomeView.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The production cutover (
release-20260610105534) shippedmaster@28e370b— a 2026-06-10 snapshot of the rewrite. Butrewrite/web-foundationcontinued past that merge and was 33 commits ahead, so a large body of fixes/features never reached prod. This merges the branch intomasterso 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
6f62604Safari/WebKit preview re-render — acked render delivery so live edits + page switches update the diagram (prod currently shows the bug)6f9cd27multi-page reconcile — page 2 no longer renders page 187ae78dLSP worker guarded behind Worker-availability (no editor crash)b5212a3split New button caret height (h-8→ matches Buttonh-9)1b02156official ZenUML header logo ·2295c1cfavicon ·5751479anonymous-upgrade sign-in flowFeatures
a21030ceditor-as-landing — bare/resumes last/sample; hub →?view=diagrams(+ pre/post telemetry)73ab92cdark-ink theme for all modals + renderer header5226132mobile native-SVG render ·0286893signed-out Pricing link ·edae7b6@zenuml/core LSP in CM6Reconciliation with master-only work
masteralready carries my reactive cherry-picks (favicon/logo/PWA/help.html). Merge conflicts were onlyweb/index.html(kept master's superset: svg favicon + manifest + theme) andHomeView.tsx(kept the branch'sbuttonClassNamefor the caret fix;BrandLogoauto-merged). Thecopy-legacy-static-pagesplugin + PWA manifest + icons + theproduction-buildguards all survive.Validation (local, merged tree)
pnpm -C web typecheck→ cleanpnpm -C web test→ 1075 passed, 1 skipped, 0 failedpnpm -C web build→ ok;disthas the app + help.html/privacy/EULA + favicon/manifest/iconsplaywright test production-build --project=chromium→ 5/5 (favicon link, manifest valid + icons 200, help/privacy/EULA 200)web/+docs/only — legacysrc/, functions, firebase config untouchedThe staging E2E gate (full suite vs staging) runs on merge before any prod release.