Conversation
The players mounted a vendored, patched copy of gocassini's AGPL MeetingView (site/src/lib/vendor/cassini-viewer, synced by scripts/sync-viewer.mjs, with embedding.css reaching into its markup). They now load the published <cassini-meeting> embed from dist.gocassini.com, pinned to one exact version in src/lib/viewer/embed.ts, the way any other page would (D-838). - CassiniEmbed.svelte hands the element a blob URL of the bytes Player has already read. It uses layout="inline" and maps the site palette onto the embed's --cassini-color-* properties. It follows the site's light/dark switch through theme, and turns playbackerror into the existing notice. If the viewer script cannot load, the plain <audio> fallback is shown. - The vendored source, the sync script, the generated stylesheet, the adapter, and the dependencies only they used are gone. So are the upstream test suites, which run in gocassini. `npm test` checks that the pin is one exact version. - LICENSE.md, the README and the footer no longer describe AGPL code in this repository. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/check-embed.mjs fetches the pinned viewer.js and viewer.css and checks that the bundle carries each feature CassiniEmbed.svelte relies on: layout="inline", the palette and font properties, the live theme attribute and the playbackerror event. CI runs it before building. A pin to an older build would otherwise load and quietly misbehave. The current pin, main-ac7ff29b, fails it until a release containing gocassini#340 is on dist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01THU7Hzppt6iW8AXHGd9cBf
CI runs npm run check:embed before building. The documented hand-deploy path did not, so it could ship a pin without the features the site uses. The check is not part of npm run build: it needs the network, and builds for offline previews should still work. Found in review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01THU7Hzppt6iW8AXHGd9cBf
… run build Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01THU7Hzppt6iW8AXHGd9cBf
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.
The players load gocassini's published
<cassini-meeting>embed fromdist.gocassini.com, pinned to one exact version. This repository no longer contains any AGPL viewer source. Part of D-838.Important
Draft until the pin moves.
src/lib/viewer/embed.tspinsmain-ac7ff29b, the one embed build on dist today. That build predates what this PR relies on:layout="inline", the--cassini-color-*palette hooks, Space kept inside the viewer, andplaybackerror. Those come in codemyriad/gocassini#340. Before merging, setCASSINI_EMBED_VERSIONto the first gocassini release that includes #340, once that release is published to dist.CI enforces this:
npm run check:embedfails while the pin lacks any feature the site uses, so this PR's CI stays red until the pin moves.MeetingView(AGPL) +sync-viewer.mjspatches, compiled by this site<script src="https://dist.gocassini.com/embed/<version>/viewer.js">, loaded like any other pageembedding.cssinjected into the shadow root, targeting internal markuplayout="inline",--cassini-color-*,--cassini-font-sans,themeplaybackerrorSvelte eventplaybackerrorDOM eventtest:viewer)npm test: the pin is one exact version on dist. The viewer's own tests run in gocassiniLICENSE.mdforsite/src/lib/vendor/**andsite/src/lib/viewer/**Checked in headless Chromium. I built the site with
VITE_CASSINI_EMBED_SRCpointing at a local build of gocassini#340./try/: a local.opusopened through ablob:URL rendered 872 words.npm run checkreported 0 errors,npm testpassed, and the production build passed.This run found a bug in gocassini: narrow embeds showed a back arrow that led nowhere. The fix is in #340.
Notes
CassiniEmbed.sveltecreates the element itself, so every attribute is set before it connects: the embed reads its attributes on arrival./try/may come from any producer.@lucide/svelte,dompurify,daisyui,tailwindcss,@tailwindcss/cli. Only the vendored viewer used them.embedding.cssalso restyled tags, badges and muted text through selectors on internal markup, which the contract deliberately doesn't allow.🤖 Generated with Claude Code