Casca 1.4.0 (2026-06-03)Link to section
v1.4.0 release with v2-era licensing, distribution, and tooling
reorganization. The CSS surface walks forward with additive
changes (analytics block, theme manifests, picker form, opt-in
live layer). The monorepo carries the licensing switch, the
two-package npm split (@skellvin/casca CSS-only stays at v1.x;
new @skellvin/casca-cli ships independently), the codeberg
mirror at skell/casca-css, the cargo crate, and the release
pipeline. The CLI debut rides separately at [0.1.0] (below).
AddedLink to section
casca-analyticsblock: new public selectors, scaffolding, §9 scoped state gates per 083 ticket.- Phase 4.7a: static theme manifests, token theme compilation, server-state theme selectors, SSG-rendered no-JS picker form.
- Opt-in
dist/casca-live.js: 1665 bytes minified, polls JSON sidecar, applies field-level swaps only (no innerHTML/replaceWith/replaceChildren/outerHTML/focus). Built bymake build-live; never bundled intodist/casca.cssordist/casca-core.css.
ChangedLink to section
dist/casca.cssgrew from 113,070 bytes to 138,561 bytes (about +25KB) to include three additional mood overlays (Cyber, Lunar, Arcade), the picker scoping rules, thecasca-analyticsblock scaffolding plus §9 state gates, and the four-mood theme manifest assembly.- The picker radio name changed from
themetocasca-theme; this is an internal rename affecting only the no-JS picker form (consumers using<link href="casca.css">are unaffected).
LicensingLink to section
- License switch: AGPLv3+exception for CLI, MIT for CSS, CC-BY-4.0 for docs.
- Per-file SPDX headers across all source files (
casca lint-spdx --apply). - New license files:
LICENSE(AGPL),LICENSE-EXCEPTION.md(the Bison Parser Exception 2.2 adaptation),LICENSE-MIT,LICENSE-DOCS,LICENSING.md(path-rules table).
DistributionLink to section
- Mirror repository at
skell/casca-cssis the canonical drop-in CSS source tree, MIT throughout. - Two npm packages:
@skellvin/casca@1.4.0(CSS only, MIT, unchanged contract from v1.x) and@skellvin/casca-cli@0.1.0(CLI resolver plus five per-platform binary subpackages, AGPL+exception). cascacargo crate buildable at v0.1.0 (Rust users install viacargo install --git <https://codeberg.org/skell/casca.git> --tag v1.4.0 casca; crates.io distribution deferred for v1.4.0 because crates.io requires GitHub OAuth).- Homebrew tap at
skell/homebrew-casca, formulav0.1.0.
ToolingLink to section
- Release pipeline driven by
.forgejo/workflows/release.ymlonv*tag push:make release-preflight,make spdx-lint,make license-check,make mirror-roundtrip, plus the binary-build matrix and the npm-registry publish jobs (cargo publish step preserved as commented-out for future restoration if crates.io distribution is added). - New
.forgejo/workflows/lint-plus-policy.ymlruns the same lint + preflight gates on every push tomainand every pull request. casca lint-spdxsubcommand (with--applyidempotent heal mode) andcasca check-mirror-treesubcommand.tools/release-css-mirror.shassembly + push script;tools/readme-npm.shextended with--readme PATHflag for per-package README rewrites;tools/npm-pack-inspect.shallowlist gate.- New
VERSION+VERSION-csssource-of-truth files;make print-versionsreports the release coordinates. - 9 release Makefile targets:
release-preflight,release-monorepo,release-css-mirror,mirror-roundtrip,npm-pack-all,cargo-publish-dry-run,stage-npm-packages,install-matrix,print-versions. - Operator-local
make release-npm-manualas disaster-recovery fallback.
MigrationLink to section
The @skellvin/casca npm package keeps its v1.x CSS-only contract.
Existing consumers do not need to change anything: imports of
@skellvin/casca/dist/casca.css continue to resolve at the same
path. The v1.4.0 bump is additive (analytics block, theme picker,
live layer) and the bundle stays byte-clean MIT.
Rust users can install the new CLI via cargo install --git <https://codeberg.org/skell/casca.git> --tag v1.4.0 casca, and npm
users can install it independently via npm install -g @skellvin/casca-cli. The CLI is AGPL+exception; the CSS package
remains MIT.