Skip to content

Releases: tiptreesystems/design-system

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 23:24
Immutable release. Only release title and notes can be modified.

v0.9.0

Tokens and one glyph, from the Althea prototype's findings against 0.8.0 and
its open proposals, on Ivan's rulings and Richard's of 2026-10-13, all
recorded in the 2026-10-13 entry in docs/DECISION_LEDGER.md. Two colour
roles, three corner roles, two speeds and the sort glyph are new. Released
values change: the focus ring on paper, the tooltip, the dark primary action,
the box's rim while you write, the small text's line, the control heights
(now in rem) and the shadows' strengths. Nothing is removed or renamed.

Tokens

  • Changed: font-line-height-small 1.5 → calc(22 / 14). Every text at
    14 stands on a line of 22 (21 before). Web-only.
  • Changed: control-hero, -large, -default and -small, 56, 44, 36 and
    28px → 3.5, 2.75, 2.25 and 1.75rem: the same pixels at the default text
    size; at a larger text size a control grows with its words and its glyph.
  • New corner roles over the ladder (cross-platform): radius-block
    ({radius-20}, a block that holds rows), radius-field ({radius-16}, a
    field and anything that is one) and radius-row ({radius-12}, a row or
    an item not inside a block, and a tip).
  • New speeds (cross-platform): speed-brisk 0.15s, what opens (a tip, a
    menu, a dialog, a section), and speed-slow 0.4s, what Althea adds to the
    page arriving, beside speed-quick 0.1s and speed-regular 0.25s.
  • z-overlay is now documented: a layer that floats without stopping the
    page, under the popovers. A modal's veil stands one under its dialog,
    calc(var(--tt-z-dialog) - 1). No value changes.

Roles

  • Changed, light: color-focus-ring #5e9cff → the accent
    ({color-accent}, #3c8286), the ring every control draws: 4.33:1 on
    color-bg-primary, 3.92:1 on color-bg-secondary and 4.44:1 on white, up
    from 2.67:1. The dark ring keeps its value, now by reference to the accent.
  • Changed: color-surface-tooltip → brand-black (#1b1b1b) in both
    themes, a note laid on the page (was black at 80% on paper and stone-200
    in the dark).
  • New color-text-on-tooltip: the words on a tooltip, white in both themes
    (17.22:1). It resolves like color-action-primary-fg and is an alias of it.
  • Changed, dark: color-action-primary-bg #2e585a → teal-700
    (#3a5759) and -bg-hover #43696b → #4e686a (teal-700 mixed 90% with
    white). White on them reads 7.81:1 and 5.98:1. Light is unchanged.
  • Changed: color-border-box-focus → the accent in both themes (was
    #bdbdb3 and white at 20%): the box's rim takes the accent while you write
    in it.
  • New color-mark-done: a step that is done, the palette green
    ({color-green}, #27a644) in both themes, beside the other five marks.
    Draw it on the primary ground only: on paper it reads 3.09:1 on
    color-bg-primary and 2.80:1 on color-bg-secondary.
  • Changed, web-only: the shadows at the strengths they were drawn, as
    rgb(… / n%) strings: light shadow-lift, -block, -box and
    -overlay; dark shadow-lift (which -block and -box read) and
    -overlay. Each layer moves by at most 0.2 of a point; nothing visible.
  • A rule, no value change: color-text-quaternary is for marks beside words
    and disabled labels only. Words take color-text-tertiary or firmer, which
    reads 4.5:1 or more on both grounds in both themes; the quaternary ink
    reads 4.08:1 and 3.69:1 on paper.

Icons

  • New sort (Solar sort-linear): three lines, the longest first, for a
    filter. 131 glyphs. sort-vertical, the two arrows, is unchanged. Solar
    under CC BY 4.0, already credited in NOTICE.

What each consumer does at its bump

  • Every consumer: move any words off color-text-quaternary onto
    color-text-tertiary; keep the quaternary ink for marks and disabled
    labels. Draw color-mark-done on the primary ground only. Text at 14 that
    reads font-line-height-small gains a pixel of line (21 → 22); move any
    text at 14 that sits on another line onto font-size-small with
    font-line-height-small.
  • Lacuna: its tooltip inks its words with color-text-on-inverse, which is
    the brand black in the dark; switch it to color-text-on-tooltip, or the
    dark tooltip is black on black. Its focus rings turn from blue to teal on
    paper, and its text at 14 that reads font-line-height-small (the
    highlights page's inputs) gains the pixel of line. Its vendored chat widget
    bakes the package's CSS in, and moves only when a widget is rebuilt from a
    frontend commit that pins 0.9.0; the wheel bump alone leaves it as is.
  • docs: its words on the quaternary ink
    (docs_server/web/src/styles/components/cards.css:66, code-block.css:27,
    collapsible-item.css:44) move to the tertiary.
  • website-v2 (and the homepage copy marketing-site carries): replace the
    vendored primitives.css and theme file byte for byte, the sha256s in the
    pin test and the ?v=0.9.0 queries. The focus ring on paper turns teal,
    small text gains a pixel of line, and controls grow above the default text
    size.
  • Althea: the ring, the dark primary, the box's rim and the 22 line arrive
    through the roles it already aliases; map the sidebar filter's glyph to
    sort. A dark surface that reads color-surface-tooltip (the lightbox's
    veil) turns near-black: keep it or give it a role of its own.
  • platform-ios: the Swift source gains nine identifiers and the changed
    colours below; it reads none of the changed roles today.
  • Pin the release only after its tag.

Removed / Renamed

  • None.

Artifacts

npm tarball, Python wheel, SHA256SUMS and provenance attestations. The
v0.9.0 tag is the Swift Package release; its diff adds two colours
(colorTextOnTooltip and colorMarkDone, each with its UIColor),
Radius.block, .field and .row, and Duration.brisk and .slow, and
changes colorFocusRing (light), colorSurfaceTooltip,
colorBorderBoxFocus and, in the dark, colorActionPrimaryBg and
colorActionPrimaryBgHover.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 06:35
Immutable release. Only release title and notes can be modified.

v0.8.0

Tokens only: the spacing scale, the title step and the glyph sizes the Althea
rebuild's atoms read, taken from the Althea prototype's package proposals of
2026-10-02 (rows 1, 3 and 5), and three roles, a primitive and one value the
atoms and molecules need to match the prototype, all recorded in the
2026-10-03 entry in docs/DECISION_LEDGER.md. The nineteen proposal tokens
are new and web-only; their sizes are in rem, so they grow with the reader's
text size. The three roles and the primitive are cross-platform, so the Swift
source gains eight identifiers. One released value changes: the light danger
grounds.

Tokens

  • New spacing scale: space-025, -050, -075, -100, -150, -200,
    -250, -300, -400, -500, -600 and -800, from 0.125 to 4rem (2, 4,
    6, 8, 12, 16, 20, 24, 32, 40, 48 and 64 at the default text size). A name
    states a step, with 100 at 8, so it stays true as the scale grows with the
    text. One scale for every padding, margin and gap.
  • New title step in the heading register, between page and section:
    font-heading-title-family ({font-serif}), -size 2rem, -line-height
    1.25, -letter-spacing -0.015em and -weight {font-weight-normal} (400).
    The register now runs display, page, title, section, sub.
  • New glyph sizes: glyph-small 1rem (16, in the small and default controls)
    and glyph-large 1.25rem (20, in the large and hero controls). The glyph's
    line stays 1.5px at both.
  • Python's TOKENS['base'] carries the nineteen, resolved.

Roles

  • New color-action-secondary-border: the ring on a pill, a chip or a field
    at rest, light stone-300 (#dcdcd4), dark #464641, a step lighter than
    the content line in the light. color-button-secondary-border keeps
    stone-550 and its 3:1 edge for the consumers that still draw it.
  • New color-mark-expired: a task whose window has closed, light citron-600,
    dark citron-300, beside the other four marks.
  • New color-badge-neutral-bg: the quiet tint behind a category word, 7% of
    the ink (light #4d4d4712, dark #ffffff12); its words take
    color-text-secondary.
  • Changed, light only: color-action-danger-bg #b04a3f → #c84a4a,
    -bg-hover #963f36 → #b34242 and -bg-pressed #7f352e → #b34242,
    the brand red deepened as the prototype paints it; white on them is 4.63:1
    and 5.56:1. Dark and -fg are unchanged. Visible wherever a consumer
    aliases these roles in the light, including iOS through the Swift Package.
  • New primitive black (#000000, Swift black), beside the stone ramp:
    the pure black the prototype writes for the expanded box's shadow and the
    dark Button's. Not brand-black, which is #1b1b1b.
  • Deprecated: color-keycap-bg and -bg-hover. Nothing has read them since
    the prototype's keys lost their ground (2026-09-25); they stay until the
    next major removes them.
  • Not in this release: the corner roles, the control sizes in rem, the
    shadows at their drawn strengths, Button and its glass, the ghost grounds,
    the control-colour family and a 16 type step. The ledger entry says when
    each is taken up.

Removed / Renamed

  • None.

Artifacts

npm tarball, Python wheel, SHA256SUMS and provenance attestations. The
v0.8.0 tag is the Swift Package release; its diff adds four colours
(black, colorActionSecondaryBorder, colorMarkExpired,
colorBadgeNeutralBg, each with its UIColor) and changes the light danger
values.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 20:49
Immutable release. Only release title and notes can be modified.

v0.7.0

The design system now ships the icon library and the type foundations the
Althea rebuild runs on, as ruled in the v0.7.0 entry of 2026-10-01 in
docs/DECISION_LEDGER.md. The althea-prototype repository is the source of
truth for the new values. The icon export is provisional: its first consumer is
Althea's rebuild, and 0.8.0 withdraws it if no Althea release that imports it
has merged by then. The rebuild's first step proved this build in Althea before
the tag.

Icons (new, provisional)

  • @tiptree/design-system/icons.js: one frozen, data-only ES module of 130
    glyphs keyed by what they draw, in Solar's current Iconify names (close,
    close-circle, magnifier, pin-filled), each with its cut (linear at
    rest; filled for pin-filled; solid for menu-dots, grip-dots and
    plus-heavy) and its body for a 24 viewBox. icons.json carries each
    glyph's provenance: 113 Solar glyphs verbatim, 3 modified (microphone,
    ghost, history-2) and 14 Tiptree drawings, among them plus-heavy, New
    conversation's plus with its bars drawn filled, the one optical correction
    kept in the drawing. Both also ship in the wheel at
    tiptree_ui/assets/icons.json and icons.js. No Swift form.
  • Every stroked shape carries vector-effect="non-scaling-stroke", so the
    1.5 line is 1.5px at any size (the sparkles of moon-stars and
    stars-minimalistic draw at 1px, by Solar's design): set size and colour
    only, and remove CSS stroke-width rules aimed at icons, which now mean
    screen pixels.
  • Role names stay in each app, with a test that every mapped name exists. A
    glyph an app needs first goes in its extension file, registered in
    registry/icon-extensions.md. Brand marks are not icons.
  • Solar by 480 Design, CC BY 4.0. The package licence is now
    Apache-2.0 AND CC-BY-4.0; see NOTICE and LICENSE-CC-BY-4.0.txt. The
    module keeps a /*! … */ header and an attribution property.

Tokens

  • New, web-only: border-hairline (1px, and 0.5px at
    (resolution >= 192dpi)).
  • New, cross-platform: radius-28 (Swift r28). The corner ladder is
    4 / 8 / 12 / 16 / 20 / 24 / 28 / full; radius-6 stays, off the ladder.
  • New Button roles: color-action-primary-bg, -bg-hover and -fg
    (light teal-600 / teal-700 / white; dark #2e585a / #43696b /
    white) and color-button-secondary-bg-hover (light stone-150; dark
    #40403f). The dark values are the prototype's glass Button made opaque;
    the glass itself is the component's material, not a token.
  • New surface roles for the three surfaces and the control ring:
    color-surface-block, color-surface-box, color-border-block,
    color-border-box, color-border-box-focus, color-border-control,
    color-border-overlay (cross-platform) and shadow-block, shadow-box,
    shadow-overlay (web-only). An overlay's fill is the existing
    color-surface-card.
  • Changed: font-sans leads with 'Inter Variable', 'Inter', 'Inter Fallback';
    font-serif adds 'Literata Fallback'; font-heading-sub-weight is
    {font-weight-medium} (510, was 500), visible where a consumer aliases it
    and renders the variable face.
  • Unchanged: motion and z-index. Not minted: font-label-mono and
    surface-alpha-*.

Generator and gates

  • tokens.json accepts a media map of named, allow-listed queries; the
    block is emitted after :root in primitives.css and tokens.css, never
    in a theme file, and the Python and Swift exports keep the base value.
  • tokens.css and the three theme files gain 1 KiB of raw budget for the
    ten surface roles; the icon module and icons.json are budgeted.
  • A public-surface snapshot per release (tests/public-surface/) fails on
    any unrecorded change of a name; the release workflow checks the tarball's
    and the wheel's contents, and publishes vX.Y.Z-rc.N tags as pre-releases
    when a release needs one.

Removed / Renamed

  • None.

Artifacts

npm tarball, Python wheel, SHA256SUMS and provenance attestations. The
v0.7.0 tag is the Swift Package release; its diff is additions only: r28,
the four Button colours and seven surface colours.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 16:19
Immutable release. Only release title and notes can be modified.

v0.6.0

This release makes the Althea prototype's September tuning canon, as ruled in
the 2026-09-29 entry in docs/DECISION_LEDGER.md: the prototype
(althea-prototype/app/explore.css and its vendored brand.css) is the
source of truth for every value, and everything it introduced is shared. Three
independent consumers (the homepage, docs, and the prototype) already carry the
direction. The 2026-08-18 light-canvas gate is satisfied, so Althea's pin bump
targets this release; docs and Lacuna re-bump from v0.5.0.

Re-ruled values

  • Dark ladder: stone-850 #282826, stone-875 #222220, stone-900 #1b1b1a,
    stone-950 #161615, stone-1000 #10100f. These primitives are
    cross-platform, so iOS renders the change.
  • Light canvas: stone-050 #fcfcfb.
  • Light accent moves to the new ramp steps teal-550 #3c8286 and teal-650
    #346f72 (hover); the dark accent and both links are unchanged.
  • Text greys: light secondary/tertiary/quaternary one step darker
    (stone-750/650/550); dark one step lighter (stone-300/400/500).
  • Light border-primary becomes stone-350, a ruled collapse onto
    border-interactive in light only.

Shared theme additions

  • color-bg-ground (stone-050 / new stone-1050 #0d0d0c): the flat canvas
    docs and the homepage map to; Althea's page stays color-bg-primary.
  • color-row-hover (stone-150 / 11% white) and color-surface-open
    (stone-200 / 15% white) beside the unchanged color-surface-hover.
  • color-border-section, color-keycap-bg, color-keycap-bg-hover.
  • Four marks and two channel greens: color-mark-new, color-mark-live,
    color-mark-idle, color-mark-community, color-channel-whatsapp,
    color-channel-sms.
  • shadow-lift, web-only and themed, with the prototype's alphas resolved to
    hex.

Shared primitives and web-only scales

  • stone-1050, teal-550, teal-650, radius-20.
  • The control scale control-hero, control-large, control-default,
    control-small (56 / 44 / 36 / 28 px).
  • font-code (the Google Sans Code stack; font-mono stays true mono), the
    Inter weights font-weight-light/normal/medium/semibold/bold
    (300 / 400 / 510 / 590 / 680), the six-step body scale font-size-* with
    font-line-height-* and font-letter-spacing-*, and the four-step heading
    register font-heading-* (size, line-height, letter-spacing, weight, and
    the serif/sans family for page, section and sub).

Artifacts

The release workflow publishes the npm tarball, Python wheel, SHA256SUMS,
and build-provenance attestations. The immutable v0.6.0 Git tag is the Swift
Package source-control release; because five dark primitives change, the tag
follows the iOS screenshot pass recorded in the ledger.

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 15:33
Immutable release. Only release title and notes can be modified.
e30cfcd

v0.5.1

This is a distribution-only release. Token names, references, applicability,
and resolved light/dark values are unchanged from v0.5.0.

Swift Package

  • Adds the TiptreeDesignSystem Swift Package library for iOS 17 and newer.
  • Commits the generated Swift source consumed by Swift Package Manager while
    preserving tokens/tokens.json as the only authored value source.
  • Fails the release gate when the committed Swift package source is stale.
  • Compiles the package for a generic iOS device in pull-request and release CI.

Existing artifacts

The release workflow continues to publish the npm tarball, Python wheel,
SHA256SUMS, and build-provenance attestations. The immutable v0.5.1 Git tag
is the Swift Package source-control release.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 14:39
Immutable release. Only release title and notes can be modified.

v0.5.0

This release implements the four graduations ruled in the
2026-08-19 “Consolidated leftover-value rulings” entry in
docs/DECISION_LEDGER.md. Publication is authorized by the later “v0.5.0 gate
narrowed to Althea adoption” entry: docs already renders these values, Lacuna
does not consume the four roles, and Althea adoption remains gated on Ivan's
pass. A later light-value re-ruling ships immutably as v0.5.1.

Shared theme additions

  • Adds text-quaternary as stone-500 in light and stone-550 in dark.
  • Adds surface-sunken as stone-150 in light and stone-1000 in dark.
  • Adds the web-only scrollbar-thumb wash at 10% black/white alpha.
  • Adds border-interactive as stone-350 in light and the ruled off-ramp
    #464641 literal in dark; the dark value intentionally sits between the
    stone-700 and stone-750 ramp steps.
  • Keeps --tt-color-button-hover-bg absent. A5 remains deferred to the
    sitting and the v0.4.1 absence assertions remain authoritative.

Artifacts

The release workflow publishes the npm tarball, Python wheel, SHA256SUMS, and
build-provenance attestations. GeneratedTokens.swift remains a local build
output; iOS release integration is deferred.

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 18 Aug 15:15
Immutable release. Only release title and notes can be modified.

v0.4.1

This release is the first product of the estate divergence-audit cadence. It
graduates shared semantic roles only where the consolidated Althea, docs, and
Lacuna evidence establishes the contract.

Shared theme additions

  • Adds surface-hover and disabled-action washes in both themes.
  • Adds independently shared success and warning emphasis fills for chips and
    tags without changing the existing status recipe anchors.
  • Adds the shared tooltip surface after verifying equivalent Althea and docs
    values in both themes.
  • Keeps the accent-action ramp app-local until a second production consumer
    wants it.
  • Defers button-hover fill: Althea's dark 6% alpha and docs' #0f alpha are not
    exactly CSS-equivalent, so the conditional release gate did not pass.

Artifacts

The release workflow publishes the npm tarball, Python wheel, SHA256SUMS, and
build-provenance attestations. GeneratedTokens.swift remains a local build
output; iOS release integration is deferred.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 20:32
Immutable release. Only release title and notes can be modified.

v0.4.0

This release makes the package reflect its first production adoption: shared
tokens and light/dark themes, with components admitted only after demonstrated
consumer demand.

Breaking package-surface cleanup

Button never reached a production consumer, so v0.4.0 removes these experimental
v0.3.x npm subpaths:

  • @tiptree/design-system/components/button.css
  • @tiptree/design-system/layered/components/button.css
  • @tiptree/design-system/tt.css

The npm tarball and Python wheel contain no Button CSS, component manifest entry,
or dormant spec. Consumers pin immutable v0.3.1 assets and cannot observe this
removal until deliberately upgrading. The Button spec, parity evidence, and
reusable comparison engine remain in Git for future graduation work.

Shared theme additions and fixes

  • Graduates Althea's shipped danger-action roles, four status recipes,
    focus-ring color, inverse surface/text, and accent-on-surface roles.
  • Prevents status foreground/background collapse with resolved recipe tests.
  • Strengthens secondary-control boundaries to at least 3:1 against every
    published surface in both themes.
  • Emits color-scheme: only light in light-polarity blocks to opt out of
    browser Auto Dark; dark-polarity blocks remain color-scheme: dark.
  • Reframes the local showcase as a side-by-side tokens/themes explorer.

Artifacts

The release workflow publishes the npm tarball, Python wheel, SHA256SUMS, and
build-provenance attestations. GeneratedTokens.swift remains a local build
output; iOS release integration is deferred.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 10 Aug 06:45
Immutable release. Only release title and notes can be modified.

Full Changelog: v0.3.0...v0.3.1