# Changes and open points

> What changed in brand and design, when and why, and what is not yet decided or built. Honest, with sources.

Source: https://brand.heyalbert.family/en/aenderungen/ · Hey Albert brand and design system

The design system has a history. If you built against an earlier version, this is where you find what changed. If you are new, this is where you find the open spots. The source for everything is `docs/entscheidungen.md` (decision log) and `docs/status.md`.

## Current state

The package `@hey-albert/design-system` is at version 0.1.0. Since 22 September the values have been frozen in `tokens/quelle` and are checked against `tokens/referenz`.

> **Open**
>
> On 31 August a versioning rule was set: major when a value moves or a token disappears, minor when something is added, patch when only text changes. It lived in the predecessor project and was not carried over into the package. So 0.1.0 does not mean anything yet.

## Changes

| Date | What | Why |
|---|---|---|
| 21.10.2026 | brand.heyalbert.family is created, generated from the package. `regeln/regeln.json` becomes the machine-readable source for words, registers, limits and design rules. Token descriptions now use proper umlauts. | One place for the team, outside experts and agents, without a second source. |
| 30.09.2026 | The website looks as it did before the move to Payload again. Payload blocks are drawn in the markup of the old generator, and `stil.css` is the source of the look. | The first Payload version looked visibly different. |
| 22.09.2026 | Tokens as code: source in W3C format, Style Dictionary generates CSS, a Tailwind theme and Swift. Ten shadcn primitives on our roles, sixteen website blocks, Storybook, visual regression, brand QA. Seven new roles for hover and pressed states. | Values still sat as hex in `components.css` and `Karte.jsx`. Now a hex value exists only in the source. |
| 20.09.2026 | Group `components/hq` with `Satellit` and `Trichter`. | HQ got components that are built in the system first and then in the app. |
| 19.09.2026 | Monorepo: the system lives in `packages/design-system`. The web app takes tokens and fonts from the package. `Rahmen.tsx` is `LeisteMac` plus `Kopfzeile` for app and HQ. | One frame, one source, nothing built twice. |
| 04.09.2026 | The design system from Claude Design becomes the only source. Old tokens, old screens and the first brand site go to the archive. The four fonts are downloaded and served locally. | Two sources are a fork. Fonts from Google’s servers pass on every visitor’s IP address. |
| 04.09.2026 | Website and app share one palette. The old palette from the homepage blueprint no longer applies. | A separate token set for the website is ruled out. |
| 02.09.2026 | The colour world of the A2 screen sets becomes the app: warm cream, a black sidebar, pink as accent, beige cards, yellow for family, blue for drives. | The founder’s decision after the last screen sets. |
| 31.08.2026 | „Disabled“ becomes a computed role instead of opacity. | Opacity multiplies with the background, so no contrast figure holds. |
| 30.08.2026 | The mark is a tangle with eyes, also as favicon. Mascot and brand mark are two different jobs. | Albert does not tidy life up. He keeps the overview while it goes on. |
| 30.08.2026 | Fonts are served locally. | Ruling of the Munich Regional Court of 20.01.2022 on Google Fonts. |
| 28.08.2026 | The „Notizbuch“ (notebook) world is set: paper, ink, sticky notes, no shadows. The signal colour belongs to no person. | Seven design worlds were compared. |
| 23.08.2026 | Foundation of ink on paper, hairlines, an 8 px grid, no elevation system. | A kitchen calendar, a binder and the yearbook are all paper. |

## Open points

Every point has been checked against the files, as of 21 October.

### Design

> **Icon set not confirmed**
>
> The 47 icons in `assets/icons` are Lucide. That was a stand-in because no set of our own existed. The stand-in has been neither confirmed nor replaced. Until then the app is meant to use SF Symbols.

> **Logo only as PNG**
>
> The logo exists in five PNG versions; a vector version is missing. `docs/22` refers to vectors for app icon and favicon in `design/assets/quelle`. That folder is not in the repository, and according to `docs/22` those vectors are still dark green instead of ink and pink.

> **Secondary text on card below 4.5:1**
>
> `docs/entscheidungen.md` states on 4 September that `--grau` was corrected to a darker value so secondary text on cards reaches 4.5:1. `tokens/quelle` still holds the old value. Computed, `grau` on `karte` gives 4.41:1. The same goes for `--text-inaktiv`: the correction to 3.0:1 was decided, but the source holds the value with 2.47:1 on `grund`. Both need a decision and then `pnpm tokens`.

> **Person lines below 3:1**
>
> Lines in a person’s colour reach only 1.67:1 to 2.85:1 on `grund` in light mode. In dark mode they are above 8:1. The system does not promise 3:1 for these lines; initial and name carry the person too. If lines are to carry meaning alone, they need darker steps.

> **Contrast computed, not measured**
>
> Every contrast figure on this site and in `guidelines/farben-kontrast.html` is computed by WCAG. Nothing has been measured with an instrument on real screens.

> **No template in the system**
>
> There is no template in the design system for iPad, Watch, Safe, finances, album, yearbook or the Sunday round (*Sonntagsrunde*) as a surface of its own. The website’s screens show some of them. Those screens are marketing visuals, though, not approved surfaces. The screen chapters therefore mark their anatomy as a proposal.

> **Homepage images**
>
> Three ink drawings, the founder’s photo and a photo of the printed yearbook are missing. The components show `Bildplatz` (image placeholder) there.

### Language

> **The fifth register**
>
> `docs/21` and the skill `texten` name the **Briefeschreiber** (letter writer) as the fifth register. The design system (`guidelines/sprache.html`, `readme.md`) names the **Flüsterer** (whisperer) for Watch and notifications. Until this is decided, `docs/21` applies. The whisperer is a length limit of seven words.

> **Word lists in several places**
>
> Since today `regeln/regeln.json` is the source for banned words. `skripte/qa.mjs` still has its own list, `tooling/check-sprache.py` a third. Neither reads `regeln.json` yet.

### Tools

> **Two checks fail**
>
> `tooling/check-sprache.py` looks for the module `sprache`, `tooling/check-kontrast.py` for the module `albert_tokens`. Both lived in the predecessor under paths that do not exist here. `pnpm qa` and `pnpm tokens:diff` pass.

> **Old paths in rules and reviewer**
>
> `.claude/rules/design-tokens.md`, the agent `design-pruefer` and `docs/22` §1 and §10 still name `design/system/` and `Scripts/`. Today the source is `packages/design-system`; the steps for making changes are in the chapter [How we build](/en/entwickeln/).

> **Not wired up yet**
>
> `swift/Tokens.swift` is generated but not part of any Xcode project: `apps/apple` contains only a README so far. `apps/web` uses the tokens and its own components, but not yet the package’s Tailwind theme and shadcn primitives.

### Legal

> **Terms of use**
>
> Who may use logos and screens for what is not set down in writing. The proposal is under [Downloads](/en/downloads/).
