Aloha

Changelog

Shipped, not promised

Each release lands in your inbox with a fresh download link. This page is the plain-language record.

  1. v1.7.0

    A seventh theme, and a Shopify shop with nothing to install

    • Kona joins the family. It is the storefront of a Shopify shop read headless: the catalogue is fetched at build time from the store's own public endpoints, /products.json and /collections.json, so the shop needs no app, no Storefront key and no token
    • The cart hands the order back to Shopify through a checkout permalink. Payment, taxes and shipping stay on Shopify, with the payment methods already in place: nothing sensitive passes through the theme, which has no server and no database
    • Variants, collections, filters, struck prices and sold-out states all come from the shop. A struck price is shown only when it is strictly higher than the real one, because Shopify lets you save the opposite and a fake sale is visible
    • The theme runs offline on a demo catalogue of eight products before anything is wired up, and `pnpm shopify:check` diagnoses a shop in one command, with nothing installed on Shopify or locally
    • The whole family moves to 1.7.0, Kona included. The number describes the shelf on a date, not how old a theme is: Nalu took the shared number when it arrived, and Kona does the same. A pass holder still has one number to remember, now for seven archives
    • Not one line of code moved in the six older themes. Four files differ from 1.6.3 and all four are paperwork: the number, the changelog, the licence that now covers six paid themes instead of five, and the design doctrine that counts seven themes, two of them headless
  2. v1.6.3

    An accent nobody could read, and a phone on the page

    • The house coral is built to be seen, so on a pale ground it landed between 2.62 and 3.74 to 1, where WCAG AA asks 4.5 for body text. Measured 188 times across the six themes. The brand does not move: the decorative coral is untouched, and a separate role, one step darker on the same ramp, now carries text and icons. Dark mode already cleared AA and does not change at all
    • A drawn phone shows the home page on mobile, once per site, in a column that was empty on wide screens and hidden below the large breakpoint. It is a capture, not an embedded copy of the site, and `pnpm poster` re-shoots it from the build; with no capture the block renders nothing rather than a broken frame
    • Every archive now carries what the 1.6.2 one did not: CLAUDE.md, .claude/settings.json, CHANGELOG.md and five scripts. Three of them are commands an agent can run and read: `pnpm test`, `pnpm lint:house`, and `pnpm verify`, a Playwright render bench over the build at 390, 768 and 1440 pixels
    • The bench found what review had not. Aloha's dashboard scrolled 304 pixels sideways on a phone and Kai's order sheet 247, both because a panel imposed its table's width on the page instead of letting the table scroll. Two pages of Koa scrolled sideways in French only, where the words are longer. Two link targets sat under 44 pixels. All measured before and after
    • The six themes now pass the bench with no defect at all, over 295 pages and three widths each
  3. v1.6.2

    White paper, a licence that matched, and a demo that was not a twin

    • The light page ground is tinted in all six themes. A card is filled white, so on a white ground the card and the paper it sat on were the same colour and a hairline was the only thing saying which was on top
    • Every paid archive now ships the house licence, version 1.3, the same text published on the licence page. It shipped a per-theme copy one revision behind, while that page claimed to be the one inside the zip
    • Nalu's demonstration shop sold a longboard, a leash, wax and soap: the same eight objects as Kai's, to the item. It sells open water swimming now, five drawings redrawn and every line of copy rewritten in both languages, so opening both demos shows two shops rather than one twice
    • Aloha's hero drops its two drifting halos. The comment beside them said they dirtied the photograph and kept them anyway
    • Kai's demonstration orders were referenced NAL-2026, a leftover of the demo brand rename that no search for the old name could find
    • The catalogue page counted 50 pages for Aloha and 37 for Kai. A fresh build counts 88 and 89: the dashboard and the back office were never in the total
  4. v1.6.1

    The wave under the accent word was cut in half

    • The mask that reveals a heading clipped to exactly the element box, and an accent word paints its wave BELOW that box. The house mark arrived sliced across the middle, on the largest title of the page and nowhere else, which is why it survived every review. Fixed in all six themes
    • Six fresh archives rather than a rewrite: a versioned key is never rewritten in this house, so the correction ships as its own number
  5. v1.6.0

    A sixth theme, and a redirect that only robots could see

    • Nalu joins the family. It is the storefront of a WooCommerce shop read headless: the catalogue is fetched from the public Store API at build time, from a server, so the shop needs no extension, no key and no GraphQL. The astro.build catalogue lists 1073 themes and not one of them reads WooCommerce
    • Every site answered 302 to /fr/ when a client sent no Accept-Language header. Browsers always send one, so this only ever hit crawlers: Googlebot was redirected away from the English pages that hreflang declares canonical. The fallback is the root language again
    • Kai's demo shop was called Nalu, which is now the name of a theme. It is Mascaret from this release on. Two things with one name in one catalogue is a confusion the buyer pays for
    • The whole family moves to 1.6.0, so a pass holder still has one number to remember for six archives
  6. v1.5.4

    The archive catches up with the repository

    • Aloha installs on a locked list of versions again. The archive sold as 1.5.3 carried a lockfile that still named a font removed from the manifest, so pnpm install --frozen-lockfile failed on it, and that is the command every CI and every Git-connected host runs by default
    • All five themes ship their pnpm-lock.yaml. The repositories pinned the package manager and pinned not a single package version, so two installs a week apart did not hand you the same theme
    • The house design doctrine, docs/design.md, was rewritten. Its tables listed four themes out of five, refused two typefaces the flagship actually uses, and claimed no theme here ships an animation library while two sit in Aloha dependencies. It now names its own exceptions and ends with what the house still owes itself
    • The JSON-LD self-check carried the demo brand of another theme, in all five repositories. A test fixture belongs to no theme, so its identity is neutral now
    • The Aloha share card announced 52 primitives. There are 43
    • Every archive was rebuilt from the repository and verified before upload: frozen install, astro check with zero errors, and a real build emitting the page count each README claims
  7. v1.5.3

    Back in the Astro catalogue

    • The contact address in the demos goes back to example.com. A domain we do not own, written into a demo, is what got a theme refused from the Astro catalogue, and it was the only reason given
    • The navigation bar keeps its small gap with the top of the page again, on all five themes. The offset lives in the global stylesheet, where a Tailwind utility had been quietly overriding it
    • pnpm check returns nothing at all on a fresh install: zero errors, zero warnings, zero hints, on the five themes. A comment sitting inside an opening tag was stopping astro check from reading the file
    • Instrument Serif no longer reaches the browser. The font was still imported although nothing used it, so every visitor downloaded a file for nothing
  8. v1.5.2

    The dashboards, and one number for the whole family

    • Gathers releases 1.5.0, 1.5.1 and 1.5.2, published within a few days of each other in August 2026
    • Aloha gains an eight-screen dashboard: overview, subscribers, subscriber detail, billing, usage, team and roles, activity log, settings
    • Kai gains an eight-screen back office: overview, orders, order detail, products, product detail, customers, stock, settings
    • Both are built with no JavaScript at all, like the rest of the themes: the status and plan filters are anchors, not a script
    • The five themes move to the same version number, so a pass holder has one number to remember for five archives
  9. v1.4.0

    Photographs, the filmed scene, and an install that works again

    • Gathers releases 1.1.0 to 1.4.0, published between 17 and 24 August 2026
    • Every photograph and the filmed clip move to the Pexels licence, and the photographs are brought into the build: an archive now builds offline, with the same framing as the demo
    • A filmed scene on the home page, driven by the scroll: the clip only advances while you do
    • pnpm-workspace.yaml added to every theme, so pnpm install stops failing on pnpm 11 and the build behind it runs again
    • On the shop side, the private areas open: passwordless sign-in, and a buyer area holding the licence key, the download links and the invoice
  10. v1.0.2

    Launch: the family ships together

    • Version 1.0.2 across the whole family: Aloha, Reef, Swell, Koa and Kai leave the harbour on the same number
    • iPhone fix: the header no longer oscillates when you start scrolling, it re-measures only when the width actually changes, not when the Safari toolbar breathes
    • iPhone fix: the hero's coral halo is bridled on small screens, it warmed the whole background on OLED
    • The header no longer flashes at its compact width for a frame on arrival: the measuring pass is now invisible
    • Each licence now names its own theme and demo brand, instead of borrowing Aloha's
  11. v0.2.0

    Craft pass and the mobile app pack

    • Named view transitions: an article card's title morphs into the article's h1, the category badge holds still, the navbar never replays its animation
    • Titles now reveal word by word behind a mask instead of fading in
    • Fractal grain on the hero: real texture, zero network requests, no banding on 8 bit screens
    • Contextual cursor that announces the action on hover, absent on touch and in reduced motion
    • Header shrinks on scroll: full width on arrival, narrower and more compact once you move down
    • Dark mode is now art directed, not inverted: shadows become luminous borders and inner glows
    • Empty state and Field primitives, the two every buyer used to write by hand
    • Capacitor pack: pnpm app, capacitor.config.ts and the full guide to shipping as an iOS and Android app
    • Honest inventory: the primitive count was advertised at 41 and was actually 38. It is 42, counted in src/components/ui at every release
    • pnpm rebrand now lands your brand colour exactly on the 400 step. It used to approximate it, which is not acceptable for a brand colour
    • pnpm rebrand transposes the art direction instead of replacing it: the second accent and the dark anchor keep the hue relationships the palette is built on, and the dark anchor is always cool whatever accent you start from
    • Routes that were hardcoded in seven components (sign in, sign up, terms, privacy) now live in the config: one file redirects the whole theme
    • Legal pages the EU requires to sell: terms of sale and privacy policy, written from what the site actually does
  12. v0.1.0

    First public release

    • 19 source routes, 50 built pages: home, features, pricing, blog, integrations, about, contact, auth, legal, 404, in English and French
    • 42 UI primitive families, zero JavaScript by default
    • 3 React islands (stats panel, pricing calculator, testimonial carousel)
    • The WebGL particle ocean hero, lazy and reduced-motion aware
    • Owned SEO layer: JSON-LD builders, robots.txt, llms.txt, sitemap, RSS
    • 55 CSS motion utilities, fluid display type, dark mode
    • pnpm rebrand and pnpm og tooling
    • Agent-ready docs: wiki, AGENTS.md, conventions, design doctrine