karitham.dev website! atproto & fancy ssg + csr & blog articles karitham.dev

client: replace imperative innerHTML client with Lustre islands main

The old client justified skipping MVU with a claim that async effect.from dispatch is unreliable on the JS target. That claim is false on Lustre 5.7.1 (verified statically against the shipped runtime and empirically under Node), so the client is now three lustre.application islands mounting on the server-rendered #profile-section, #plays-rows, and #repos. - hydration: #site-model now carries the remote->local image rewrite map alongside the build-time model; islands take it as flags so their first render matches the SSG markup. The separate #image-rewrites tag and the document-wide img rewrite pass are gone; profile images are localized as data before render. - pipeline/commit and the browser set_inner_html/set_attribute FFIs are deleted; DOM ids are exported from shared so markup and selectors can't drift. - data-stale moved to a wrapper the plays island owns; the CSS pulse dot keys off .section:has([data-stale="true"]). - the client bundle is now a single minified self-executing module from lustre/dev build (87KB) instead of a whitelisted copy of the dev tree; the client lockfile regeneration also dropped five unused crypto packages.


Author karitham.dev
Date Commit Parent 45b6b0de Change ID