Changelog
Every shipped release of BrandOS — tokens, components, and docs. Dates are ship dates, not PR dates.
featNew capability fixBug fix docsDocumentation refactorInternal cleanup perfPerformance
v1.4.4 latest
May 12 2026 Liquid + Alexander Labs profiles, premium Gotham, brand count = 5
- feat brand Liquid Intelligence & Marketing brand profile added — single shared design system covering both Liquid Intelligence (coalition data, signal work, audience activation) and Liquid Marketing (campaigns, creative, demand-gen).
- feat brand Alexander Labs brand profile added — applied-research brand on teal + lime in Electrolize headings + Poppins body.
- feat tokens Alexander promoted from megazord overlay into @brandos/tokens proper — raw-colors.json + semantic.json sources, five hand-authored CSS files (variables, semantic, theme, daisyui, mui), BRAND_NAMES + package.json export wired. data-brand="alexander" now cascades through brand-all.css alongside the other six brands.
- fix brand Removed brandOS/brand/src/layouts/BaseLayout.astro alexander-tokens.css overlay link and deleted public/alexander-tokens.css — Alexander now flows through the canonical @brandos/tokens pipeline.
- feat brand Self-host premium Gotham fonts via pnpm setup-fonts — script downloads 4 OTF weights (Light/Book/Medium/Bold) from liquidint.com into public/fonts/Gotham/. main.css declares @font-face rules; [slug].astro carries a SELF_HOSTED_FONTS set that filters premium families out of the Google Fonts URL builder.
- feat brand Brand profiles support an optional logoSvgDark variant — Alexander ships both marks (alexanderLabs + alexanderLabsDark) and the detail page swaps them via [data-theme="dark"]. Other brands fall back to the single logoSvg.
- refactor brand Brand count derived dynamically — /brands headline and meta description and the H2 typography ladder sample now read "${brandProfiles.length} brands, one system" instead of the hardcoded "Three brands".
- fix brand Liquid display name expanded to "Liquid Intelligence & Marketing" so the dual sub-brand identity is obvious in the gallery + sidebar.
- fix brand Tenant website URLs corrected — Liquid → https://www.liquidint.com/, Alexander → https://alexanderlabs.ai/.
- fix brand Icon.astro width/height guards use !== for strict equality (oxlint eqeqeq).
- docs brand New brandOS/docs/Brand/AddingABrand.md — canonical agent prompt + yaml input checklist for landing a new brand profile end-to-end (tokens promotion, mark, fonts, profile data, sidebar, verify).
- docs brand llms.txt + llms-full.txt refreshed for v1.4.4 — five-tenant intro, /brands section, new @brandos/ui/assets manifest contract, expanded data-brand enum, forbidden-table rows for <img>-for-SVG and per-app vector-graphics.
- docs brand brandOS/brand/public/assets/ ships a README explaining the folder is a generated CDN snapshot — never hand-edit, never import from in src/.
- docs brand @brandos/ui/assets/README rewritten — current layout (incl. icons/), full export table (URL vs raw namespaces), inline-SVG-over-<img> contract, asset-add workflow, deprecation policy.
v1.4.3
May 12 2026 Editorial brand profile pages
- feat brand /brands rebuilt as editorial gallery — stats strip (active tenants, ramps, swatches, primitives) with live pulse on the active-tenants tile.
- feat brand Brand cards show inline mark, 19-stop palette strip, palette name pills, typography preview, and animated "Open profile" CTA.
- feat brand Contract callout reworked with terminal-style code snippets (syntax-highlighted token import / data-brand attribute / shared primitives).
- feat brand Brand detail pages match the colors page editorial pattern — brand-tinted hero with logo + meta strip (BRAND/TOKEN/HEADING/BODY).
- feat brand One section per palette with full 19-stop swatch strip; click any cell to copy var(--token) to clipboard.
- feat brand Hex values populated client-side via 1×1 canvas (oklch → sRGB) so the chip works for tokens that ship only OKLCH.
- feat brand Semantic slots rendered as colored splash cards with usage hint and Token/Class key-value rows.
- feat brand Typography specimens render in each brand's actual font (Google Fonts loaded on-demand) — large Aa, pangram, full charset, and size ladder.
- feat brand Primitive check switched to a live app mockup (header with brand favicon, stats grid, search pill, progress bar, action buttons) that flips on data-theme.
- feat brand Previous/next brand navigation cards at the bottom of every profile page, looping ControlBus → MCIT → Micro Innovation.
- feat brand SideNav Brand Profiles entry now expands into ControlBus / MCIT / Micro Innovation, consistent with the Components group.
- feat brand BaseLayout exposes a head slot — pages can inject extra <link>/<meta> tags (fonts, preconnect, etc.) without forking the layout.
- refactor brand Brand palettes expanded from 6 stops to the full 19-stop ramp so detail pages match the canonical color page.
- fix brand MCIT website link updated to https://mclvit.com/.
- fix brand SideNav inline script reverted to plain JS — `lang="ts"` triggers Astro is:inline, which can't parse TS annotations.
v1.4.2
May 12 2026 Canonical SVG assets in @brandos/ui
- feat brand New @brandos/ui/assets module — canonical home for all brand logos, marks, login backgrounds, brand shapes, and icons across the Snyder workspace.
- feat brand Typed manifest exposes brandLogos, brandMarks, loginBackgrounds, shapes, and an icons glob — consumers import by semantic key, not file path.
- feat brand <Icon name="…"> Astro component inlines raw SVG content so icons inherit currentColor and CSS theming instead of rendering as opaque <img>.
- refactor brand Brand site swaps every <use href="/X.svg#X"> call site (header, side nav, tweaks panel, theme toggle, tile grid, logo/iconography/ai-guardrails/downloads/components pages) onto the new Icon component.
- refactor brand Brand profile marks render inline via brandMarksRaw so tenant colours inherit page theming.
- refactor brand Favicon, OG image, and download links resolve through the manifest — public/ no longer carries duplicated SVGs.
- fix brand Liquid shapes renamed from shape-01/02 + bg-01/02 + liquid-shape-1/2 to semantic names (flow-composition, side-arcs, slide-rays, slide-base, glyph-blocks, glyph-triangles).
- fix brand SideNav inline <script> declared lang="ts" so TypeScript annotations parse under Vite 8 + oxc.
v1.4.1
Apr 24 2026 Discoverability, search, mobile polish
- feat brand Per-page <title>, description, and canonical URL across every public page.
- feat brand Branded Open Graph card (og-default.svg) served from /public for social embeds.
- feat brand Dynamic sitemap.xml.ts enumerates every route for search engines.
- feat brand robots.txt ships allow-all with sitemap pointer for crawler friendliness.
- feat brand Cmd-K search palette — keyboard-first overlay with fuzzy title + section match across brandNav.
- feat brand Tweaks panel upgrades — 12-swatch accent picker, tile shuffle row, logo upload with preview.
- feat brand Global focus-ring audit — shared stylesheet applied via main.css with inset variant for tiles.
- fix brand Mobile drawer gains a sticky close button so the nav closes without the hamburger.
- fix brand Home tiles no longer collapse on tall-short viewports — single-viewport fit now gated on min-width 1100px.
- fix brand Footer respects iOS safe-area-inset so "BrandOS v1.4" is not clipped by the home indicator.
- fix brand Logo clearspace frame clips + scales on mobile so the corner S pseudo-element stays inside the viewport.
- fix brand Tile grid xs breakpoint — single column below 30rem for narrow phones.
- fix tokens Hackerman semantic border shift (200→300, 700→800) so borders stay visible over neon-green surface tints.
- refactor brand Raw-CSS-to-Tailwind sweep across every page + shared stylesheet; only pseudo-content, @keyframes, and CSS-var setters remain raw.
v1.4.0 minor
Apr 22 2026 Editorial BrandOS site
- feat brand Dropbox-style home shell — sticky header, tile grid, minimal footer.
- feat brand Editorial hero with em-accented headline, pulse-dot eyebrow, meta aside.
- feat brand Home tile grid: 7 tiles, first featured (2-row tall), hover lift + shine sweep.
- feat brand Sticky left sidebar with Foundations · Expression · Practice · Components · Resources groups.
- feat brand Nested Components dropdown in sidebar — Brand · Shoelace · DaisyUI · MUI with component pages.
- feat brand Logo page rewritten — hero, variants, clear-space, lockups, formats, do/don’t.
- feat brand Color page rewritten — swatch strip with click-to-copy hex + toast, accent cards, semantic cards.
- feat brand Typography page rewritten — specimen hero, family cards, clickable fluid scale, weight ramp.
- feat brand Iconography page rewritten — hero, specs, size ramp, full library with <use>-copy snippets.
- feat brand Voice & Tone rewrite — pillars, do/don’t columns, microcopy before/after table.
- feat brand Motion page rewritten — live easing stages (FLIP-style replay), duration bar table.
- feat brand Imagery page rewritten — mock photo hero, principles, treatment, aspect ratios, formats.
- feat brand Framework page rewritten — mission hero, pillars, values, themes showcase.
- feat brand Accessibility page rewritten — manifesto, 6 pillars, verified contrast pairs, keyboard map, checklist, tooling.
- feat brand Best Practices rewritten — golden rules, designer + engineer playbooks, PR checklist, related reading.
- feat brand Enterprise Patterns rewritten — mock SaaS shell, 6 patterns, status vocabulary table, multi-tenant.
- feat brand AI Guardrails v2 — allowed / forbidden grids, reuse ladder, prompt fragments with clipboard copy.
- feat brand Roadmap page rewritten — status legend, shipped timeline, quarterly cards, proposal steps.
- feat brand New /changelog page with typed release timeline (feat · fix · docs · refactor · perf).
- feat brand New /downloads page — brand-kit editorial hero, logo variants, fonts, real tokens.css + tokens.js.
- feat brand New /404 page — editorial display number, back-home CTA, quick-link chips.
- feat brand New /components hub — four library feature cards (Brand · Shoelace · DaisyUI · MUI).
- feat brand New /llms.txt + /llms-full.txt — AI-discoverable contract with full token inventory.
- feat brand Tweaks panel — floating trigger in header, brand · theme · palette · tile shuffle, persisted to localStorage.
- feat brand Tile shuffle uses FLIP animation with staggered stagger for smooth reorders.
- feat brand Global toast region — hex copy, token copy, SVG <use> snippet, prompt copy, all confirm via unified toast.
- feat brand Auto-injected Copy button on every showcase <pre> block, with "Copied" feedback state.
- feat brand Four component library landing pages uplifted — editorial grid with accent bar + translating arrow.
- feat brand 54 component showcase pages get auto-numbered kickers ("01 · DEMO"), demo canvases, styled tables + pre blocks via shared CSS.
- feat brand Auto-injected breadcrumb + library chip on every /*-components/<slug> page via shared BaseLayout script.
- feat tokens New --semantic-on-accent / -muted / -subtle / -shine tokens for content over accent fills (Snyder + Hackerman).
- feat tokens New --semantic-tile-dim token for tile hover wash.
- feat tokens Spacing scale adds steps 14 (3.5rem) and 18 (4.5rem) for chrome rhythm.
- fix brand Hackerman dark + light borders visible via scoped --semantic-border + --color-base-300 overrides.
- fix brand Snyder light borders bumped one gray step darker for card outlines.
- fix brand Semantic cards (Success/Warning/Error/Info) use light-dark() so dark-mode foreground stays legible.
- fix brand Swatch cell labels forced to pure dark / white via oklch() — Hackerman theme no longer washes out shade numbers.
- fix brand Accent bar labels use pure white + text shadow — readable on every vivid hue regardless of theme.
- fix brand Logo card foregrounds use filter: brightness(0) invert(1) on dark / primary canvases so embedded SVG fills reverse correctly.
- fix brand Home page SSR no longer crashes on the missing index variable in TileGrid.map callback.
- docs brand Downloads ships real artifacts: tokens.css (brand-all.css) and tokens.js (ES module) served from /downloads/.
- docs brand llms.txt + llms-full.txt expose the full AI contract + token inventory to external AI assistants.
- style brand Header simplified — Snyder wordmark dropped (logo SVG already carries it), theme toggle swapped for Tweaks trigger.
- style brand Footer minimized to single legal bar: © Snyder Tech · BrandOS version, full-width, header padding parity.
- refactor brand Toast styles promoted to shared/toast.css and imported globally from main.css.
- refactor brand Raw CSS migrated to Tailwind @apply where possible; remaining literals document why (keyframes, color-mix).
v1.3.0 minor
Mar 18 2026 Hackerman as a theme
- feat tokens Second brand ships as a theme, not a fork — tokens flip on data-brand.
- feat tokens Graygreen neutral scale added for the Hackerman palette.
- feat tokens Light + dark parity verified across every semantic slot.
- refactor tokens Collapsed -light / -dark token pairs into light-dark() resolvers.
- docs brand Framework page showcases both themes side-by-side.
v1.2.0 minor
Feb 04 2026 Fluid type + motion
- feat tokens clamp()-based fluid type scale (xs → 9xl) replaces static sizes.
- feat tokens Five easing curves + five durations exposed as --brandOS-ease-* / --brandOS-duration-*.
- feat brand Motion page with live easing stages + duration bar table.
- feat ui prefers-reduced-motion wired through every component.
v1.1.0 minor
Jan 14 2026 Icon system + components
- feat brand 26 pictograph icons on a 24×24 grid, 1.5px stroke, currentColor.
- feat ui brand-button, brand-card, brand-input, brand-select shipped as first-class web components.
- docs brand Iconography page with click-to-copy <use href> snippets.
v1.0.0 major
Dec 02 2025 BrandOS v1 — public launch
- feat tokens Snyder primary (Baby Blue) 19-step OKLCH scale.
- feat tokens 12-color accent palette × 16 variants each.
- feat tokens Typography, spacing, radius, shadow, motion, z-index token groups.
- feat tokens Framework overlays for Tailwind, DaisyUI, Shoelace, MUI.
- feat brand Public docs site at brand.snyder.tech.