Skip to content

docs: rework the landing and showcases, add the 0.5.0 guides, and cut per-page transfer - #84

Open
chh-ay wants to merge 15 commits into
fix/widget-theme-reseedfrom
feat/showcase-analysis
Open

chh-ay wants to merge 15 commits into
fix/widget-theme-reseedfrom
feat/showcase-analysis

Conversation

@chh-ay

@chh-ay chh-ay commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Summary

Top layer of the 0.5.0 stack. Docs site, deployment, and release-note corrections; no package source changes.

  • Landing and showcases. Seekable landing illustrations (click or press Enter on a numbered step to start from it), a sectioned showcase hub (Capabilities and Framework adapters), and staged showcase pages with realistic data.
  • 0.5.0 guides. What's new with an upgrade checklist, analysis formulas, the calculation engine page, host-owned rows in the sidebar, and updated collaboration, persistence, interaction, styling, configuration, start, and framework pages.
  • Page weight. Production build, one cold load per page, every response summed. Brotli uses the size report's settings (quality 11). The baseline is this layer with the transfer changes reverted, built separately; its landing entry chunk is smaller than the original, so the landing savings are understated.
Page Raw before Raw after Raw cut Brotli before Brotli after Brotli cut
/ 1,560 KB 1,075 KB −31% 351 KB 306 KB −13%
/docs/ 1,317 KB 692 KB −47% 327 KB 269 KB −18%
/docs/start/installation/ 1,752 KB 1,026 KB −41% 349 KB 294 KB −16%
/docs/api/core/grid/ 4,191 KB 1,855 KB −56% 373 KB 314 KB −16%
/docs/guides/configuration/ 5,259 KB 3,420 KB −35% 434 KB 364 KB −16%
/docs/api/core/cell-a1/ 1,348 KB 784 KB −42% 335 KB 281 KB −16%
/showcases/ 1,316 KB 769 KB −42% 326 KB 282 KB −14%
/showcases/performance/ 2,695 KB 2,116 KB −21% 703 KB 651 KB −7%
/showcases/formulas/ 3,010 KB 2,376 KB −21% 789 KB 730 KB −7%

Brotli already removes most repeated popover markup, so the wire saving (7–18%) is far smaller than the uncompressed one (21–56%). The uncompressed cut still reduces the bytes the browser parses and holds.

  • Hover popovers were 63–81% of docs HTML and mostly repeats (Grid page: 152 popovers, 41 distinct). One panel per distinct popover now lives in a hidden per-page store; triggers point at it, in HTML and in the hydration chunk.
  • Expressive Code inlined one identical 17 KB stylesheet into 509 of 559 pages. It now ships once in the cached site stylesheet.
  • TanStack's route splitter kept .mdx imports and module-scope calls in the always-loaded route modules. Landing snippets (~400 KB), the docs page index (95 KB), and the capability inventory (30 KB) no longer load on every page. Hidden landing code tabs load on hover, focus, or click.
  • Docs pages no longer download the landing and showcase stylesheets. Client navigation into those routes still paints styled on the first frame.
  • Deployment. The live site serves hashed assets with max-age=0, must-revalidate. The packaged Vercel config now sends public, max-age=31536000, immutable for /assets/* and Pagefind's hashed shards; HTML and stable entry files keep revalidating. The prebuilt-only deploy contract is unchanged.
  • Formula contract. Fails when an unsupported-category example names a supported function; the @sheetwrite/formulas README lists every full-engine family.

Changesets

No new changeset: only private docs and tooling change here, plus the @sheetwrite/formulas README, which ships with that package's 0.5.0 minor. The docs package keeps its hand-written Unreleased section, per #58. Three stale stack changesets are corrected:

  • full-formula-engine: final release binary sizes, measured with the size report's Brotli settings (default 791,937 / 238,071 bytes; full 1,074,934 / 326,278 bytes). The old text also implied the default binary did not grow in 0.5.0.
  • report-oversized-undo: drop the "about 1,000,000 number cells" threshold that compact-large-undo (fix(core): restore large undo steps with atomic sync batches #63) made obsolete.
  • steady-toolchain-refresh: stop naming Rust 1.98.1; the release pins 1.99.0 (engine-hot-paths).

changeset status --since=origin/develop: core, wasm, formulas, xlsx, react, vue, and svelte each go from 0.4.0 to 0.5.0.

Verification

  • Full Chromium browser suite against the production build: 82 pass.
  • Docs tests 21 pass; tooling tests 104 pass, including a new deployment case: hashed assets are immutable and HTML, the sitemap, and the Pagefind entry still revalidate. Docs typecheck, docs:check, and Biome pass. The one Biome warning, the existing reduced-motion !important, is unchanged.
  • Production smoke: shared popovers open from different triggers and close on leave; docs pages load no showcase or landing CSS; the React tab fetches one chunk and renders with working popovers; client navigation from landing into docs renders and resolves every popover; throttled navigation from docs to landing and to the hub paints styled on the first frame.

chh-ay added 5 commits October 8, 2026 15:58
Record the final engine binary sizes measured on the release tree, drop the undo threshold that compact restores made obsolete, and stop naming a superseded Rust toolchain.
Vercel served hashed assets with max-age=0, so every page view revalidated every script, stylesheet, font and search shard. HTML and stable entry files keep revalidating.
…d unsupported-examples

The formula contract now fails when an unsupported-category example names a function some build evaluates, and the inventory drops the examples the full engine now supports.
What's new with an upgrade checklist, analysis formulas, the calculation engine, and updated collaboration, persistence, interaction, styling and configuration guides.
Seekable landing illustrations, a sectioned showcase hub, and staged showcase pages. Hover popovers share one panel per symbol, Expressive Code styles load once from the cached site stylesheet, and landing snippets, the docs page index, the capability inventory, and landing and showcase styles stay off pages that do not use them.
@chh-ay chh-ay mentioned this pull request Oct 8, 2026
86 of 96 tasks
@chh-ay
chh-ay added this pull request to stack #69 October 8, 2026 09:05
chh-ay added 7 commits October 8, 2026 16:06
Brotli already removes most repeated popover markup, so the 21-56% uncompressed cut is 7-18% on the wire.
CI Browser Smoke runs against a prebuilt docs site without built workspace packages. Move shared workbook and seed data into modules with type-only package imports so Playwright specs do not load runtime package dist entries.
Each commit rebuilt the whole workbook from its snapshot, applied one transaction, exported and JSON-copied it again: about 450 ms per one-cell commit on the 110,000-cell collaboration document. A failed commit, including a failed batch member, rebuilds the committed state from the initial snapshot and the log, so it still changes nothing.
…rom losing work

Chaos edits land on rows both grids show and flash in the editor's color on each client. Conflict recovery freezes the client and waits for queued writes before taking its pending list, the link keeps broadcasts that arrive while a client remounts, releasing held broadcasts also cancels a pending hold, and the settle check requires both clients at the server head. The collaboration guide's recovery recipe gains the same ordering rules.
The showcase link now routes reconnect drains and held-broadcast releases through the same delivery path as live traffic, so a remount never drops them. MemoryPersistenceAdapter prepares its log entries before applying, so nothing can fail after the live store changed. The storm spec's budget covers the 30 s drain window.
chh-ay added 3 commits October 9, 2026 08:22
Building the live store in the adapter constructor required initSheetwrite() before the adapter existed, so the Svelte workbench island—which builds its session before any grid mounts—failed to boot with 'await initSheetwrite() before constructing SheetwriteStore'. The store is now built on the first commit; constructing the adapter and loading an uncommitted document return the stored snapshot. A rollback to no committed versions also returns the document to its store-free state, so a failed first commit leaves loads identical to an adapter that never committed.
The 100,000-cell usage sheet lived in the shared forecast document, so every conflict recovery during the chaos test reloaded and validated about 10 MB of receipts and froze the page for 0.45-1.2 s. The usage sheet is now its own document on its own in-page server, started on the first batch drill; both clients remount onto it for the drill and back onto the forecast for any forecast action. Chaos runs with a recovery now show no long task over 50 ms, and the page no longer loads the usage receipts on boot.

This branch has not been deployed

No deployments
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