Loading...
Every shipped change to sankey.it, newest first.
/api/og/[slug] renders the real income-statement flow diagram (poster.ts's satori-shaped tree, via a new src/lib/og-poster.ts bridge), not a hand-authored text card - content-hash cache key means a rebuilt doc misses caches.default by construction, never a stale image (da45cb5)/v/[slug]/poster, a chrome-less 1600x900 poster surface rendered server-side from the same poster tree, plus a "Download poster" action in the share sheet (da45cb5)buildIncomeStatementDoc emits FlowDoc v2 tags (family/tier/slot/sourceKind, version 2, meta.provenance, chrome) additively, shape-identical to the pre-v2 adapter (pinned against ea894de); reads the live rd_expenses/sga_expenses columns for an honest opex sub-line note, no new node (55d46b1)--flow-* tokens (--flow-source-0..7, --flow-profit-1..4, --flow-cost-1..4, --flow-hub, --flow-neutral-v2) pinned to palette.ts, both :root and .dark (55d46b1)sync-sankey --check into bun run test, strict by default with a new --lenient escape hatch for a machine without the sibling prsa.me checkout (c187b2e)scripts/sync-sankey.mjs to resolve SOURCE_ROOT through the primary checkout so it works from a git worktree, drop the adapter leg entirely (income-sankey.ts is app-owned), retire colors.ts as a sanctioned divergence, and add an orphan sweep (c187b2e)/api/generate), and purge the Workers Caching layer's /api/og/<slug> entry from /api/generate's own purge block too (da45cb5)/api/generate's OG cache purge now only fires when the doc content actually changed (docContentHash comparison), so a stale-refresh cycle that surfaces no newer filing no longer evicts an otherwise-still-valid caches.default entry for nothing (da45cb5)src/app/api/og/[slug]/route.test.ts - a route-level test invoking GET() directly (this repo's established oembed/route.test.ts pattern), covering the 404 path, the default and poster (?size=poster) dimensions/cache keys, an unrecognized ?size= falling through to the default, and a real caches.default match/put round trip (da45cb5)page-cache-control.spec.ts now walks v/ (was (site)/embed/ only), so /v/[slug] and /v/[slug]/poster are actually asserted against the /v/:slug* next.config.mjs entry instead of only claimed by analogy (da45cb5)<main> landmark on the no-data ticker fallback (e0bc7e4)bun run cpu:assert (450c051)bun run cpu:assert:per-path (9244b0b)