Repository navigation
WolfStack v22.14.3
v22.14.3: Restore APP_ICONS + BOOKMARK_ICONS, theme-aware data-icon fill, Lucide fallbacks
Critical fix for the iconless-UI regression on v22.14.0–v22.14.1.
──── 1. Restored data-table emoji values ─────────────────────────────
APP_ICONS (28 entries, app-store cards) and BOOKMARK_ICONS (70
entries, bookmark icon palette) were destroyed by the v22.14.0 emoji
strip — every value emptied because the multi-line 'key': '<emoji>',
form didn't match the data-line skip regex. Restored from the v22.13.0
state with a comment marking them as theme-driven lookup keys. End
users on clean (default) now see Lucide icons via the runtime
emoji-translator; users on standard see emoji.
──── 2. Theme-aware data-icon filling with Lucide fallback ───────────
fillDataIconPlaceholders previously always rendered Lucide regardless
of the active icon theme, making standard and candy_emoji themes
visually identical to clean for every static <span data-icon="X">
in index.html. Now it respects the theme:
• clean → Lucide SVG
• standard → the canonical emoji glyph (inverse map of
EMOJI_TO_SEMANTIC + CLEAN_EXTRA_EMOJI_MAP)
• candy_emoji → that emoji put through CANDY_ICON_MAP
• icon-pack → empty (pack walker fills it)
Safety net: if a semantic has no emoji equivalent (e.g. health,
compass, docker), the standard/candy paths fall through to Lucide
rather than leaving the placeholder blank. Better a line icon than
missing chrome.
──── 3. Predictive Inbox icon ───────────────────────────────────────
The 🔮 crystal-ball glyph on the top-strip Predictive Inbox button got
left behind by the earlier index.html sweep. Replaced with a Lucide
inbox placeholder.
──── 4. Remaining index.html emoji ───────────────────────────────────
Replaced 7 stray emoji (🚨, 👀, 👤, 💽, 💿, 🎛, 🧰, 📱, 🧩) with
explicit <span data-icon="..."> placeholders mapped to the
appropriate Lucide icon (warning, eye, user, hard-drive, disc,
sliders, wrench, smartphone, puzzle). Header-position emoji were
stripped entirely per the no-emoji-in-headers directive.
──── 5. Expanded LUCIDE_NAME_MAP ─────────────────────────────────────
Added inbox, hard-drive, disc, sliders, puzzle, smartphone, eye, user,
siren so the new placeholders resolve. All verified against the
vendored Lucide v1.14.0 dictionary.
──── Tests ───────────────────────────────────────────────────────────
695 / 695 wolfstack tests pass in release mode.
Verifying this release
Each binary is signed via cosign keyless OIDC (no key distribution — signing identity is the GitHub Actions workflow itself, anchored to the Sigstore Fulcio CA and the Rekor transparency log) and ships with a SLSA build provenance attestation.
Verify the cosign signature:
cosign verify-blob \
--bundle wolfstack-x86_64.cosign.bundle \
--certificate-identity-regexp 'https://github.com/wolfsoftwaresystemsltd/WolfStack/\.github/workflows/release\.yml@.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
wolfstack-x86_64
Verify the build provenance:
gh attestation verify wolfstack-x86_64 --repo wolfsoftwaresystemsltd/WolfStack
Verify the SHA-256 checksum:
sha256sum -c SHA256SUMS
Artifacts
wolfstack-x86_64/wolfstack-aarch64— static musl binaries (Linux x86_64 and ARM64 / Raspberry Pi 4+).wolfstack-<arch>.cosign.bundle— cosign signature bundle (cert + signature + Rekor entry).SHA256SUMS— checksums for both binaries.
For per-version history see CHANGELOG.md.