Skip to content

Releases

Floe v0.2.2 — Typst Universe submission

Choose a tag to compare

@SpanishSyntax SpanishSyntax released this 11 Nov 22:15
v0.2.2
28107f7

Version submitted to typst/packages: README/manifest fixes, version bump. No library changes since v0.2.1.

Floe v0.2.1 — Standardized Badge Heights, Decoupled Equation Palette & Governance

Choose a tag to compare

@SpanishSyntax SpanishSyntax released this 11 Nov 21:54
v0.2.1
49690be

What's Changed in v0.2.1

1. Standardized #badge Height Across All Bare & Component Invocations

  • Root Cause Fix (primitives/badge.typ): Switched #badge and #kbd from bottom-edge: "bounds" to top-edge: "cap-height", bottom-edge: "baseline" with size: 7.5pt, inset: (x: 5.5pt, y: 3.2pt), and baseline: 18%. Badges containing descenders (warning, danger, purple, or mathematical subscripts) now have the exact same vertical height as badges without descenders (neutral, info, success, dark, outline).
  • Unified Pill Routing: Replaced all remaining hand-rolled box(...) pills across primitives/plaque.typ, primitives/item.typ, primitives/divider.typ, components/pedagogical.typ, components/math.typ, and all 12 hero/header cards in components/hero.typ with #badge(...).

2. Decoupled Equation Dissection Palette (c-term-1..c-term-6)

  • Independent Math Ink (core/tokens.typ): Decoupled c-term-1..c-term-6 (term-palette) from UI chrome tokens (floe-cyan, floe-purple, floe-amber, floe-green, floe-red) using dedicated high-contrast mathematical ink hex values (#0369A1, #7E22CE, #C2410C, #0F766E, #BE123C, #4338CA). Re-theming UI banners or alerts no longer alters equation term colors.
  • On-Demand Brand Coupling: Added brand-term-palette in core/tokens.typ and an optional palette parameter on #formula-breakdown, #eq-legend, and #stat-hero so documents can couple equation or KPI colors to brand chrome on demand.

3. Branch Protection, CI Schema Check & Collaborator Governance

  • Added CONTRIBUTING.md, .github/CODEOWNERS, .github/PULL_REQUEST_TEMPLATE.md, .github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/component_request.yml, and scripts/bump_version.py.
  • Configured GitHub branch protection ruleset on main requiring Pull Requests, passing Typst Compilation Check + floe.json schema sync verification, and linear history.

Floe v0.2.0 — Universal 5-Layer Design System, Equal-Height Engine & Multi-Science Suite

Choose a tag to compare

@SpanishSyntax SpanishSyntax released this 11 Nov 21:15
v0.2.0
bf27ece

❄️ Floe v0.2.0 — The Clean 5-Layer Architecture Release

Floe v0.2.0 is a major architectural and visual overhaul transforming Floe into a universal, zero-alias, 5-layer Typst design system across mathematics, physics, chemistry, electrical engineering, computer science, and technical documentation.


✨ Highlights & New Features

1. Strict 5-Layer Directed Acyclic Graph (L0 → L4)

  • Layer 0 (core/): Universal design tokens (core/tokens.typ), zero-dependency chemical formula & stoichiometry parser #ce("...") (core/chemistry.typ), and re-exported Typst Universe scientific backends (@preview/physica:0.9.8, @preview/unify:0.7.0, @preview/cetz:0.5.2, @preview/fletcher:0.5.8, @preview/merman:0.1.0, @preview/zap:0.5.0, @preview/codly:1.3.0, @preview/hydra:0.6.2).
  • Layer 1 (primitives/): Parent-driven equal-height row layout engine (#equal-grid, #stretch-cell), boxed containers (#card, #alert), academic plaques (#plaque), framed media containers (#figure-card, #figure-grid), item breakdown cards (#item-card, #item-grid), steppers (#stepper), timelines (#timeline), micro-badges (#badge, #kbd, #status-dot), and 8 horizontal divider styles (primitives/divider.typ).
  • Layer 2 (mixins/): Pure composable #show: rules (with-running-chrome, with-heading-theme, with-math-theme, with-code-theme with native mermaid interception, with-table-theme, with-gfm-theme, with-compact-theme).
  • Layer 3 (components/):
    • components/academic.typ: #theorem, #definition, #lemma, #corollary, #algorithm, and #proof(sketch: bool).
    • components/alerts.typ: #pitfall, #exam-alert, #note, #tip, #warning.
    • components/pedagogical.typ: #formula-breakdown (with colorized pedestal equations and auto-colored 3-tuple symbols), #derivation-stepper, #physical-anchor, #worked-example.
    • components/science.typ: Native CeTZ 2D function + scatter plotter (#plot-2d) and chemical reaction + thermodynamic plaque (#reaction).
    • components/layouts.typ: #split-view, #pro-con, #bento-grid (#bento-cell), #feature-grid, #key-value-grid, #duality-grid.
    • components/tables.typ: Rounded sans-serif #data-table, #spec-table, and #comparison-table (#badge-yes, #badge-no, #badge-opt).
    • components/hero.typ: Complete 12-component hero and section header suite (#cover-hero, #chapter-header, #editorial-header, #banner-header, #split-hero, #stat-hero, #section-header, #subchapter-card, #minimal-header, #document-header, #appendix-header, #keynote-header).
    • components/math.typ: Universal term highlighters (#t1..#t6, #math-hl), overbrace/underbrace annotations (#math-annot, #math-annot-top), and auto-colored #eq-legend.
  • Layer 4 (presets/): #textbook, #report, #slides, #memo, #cheatsheet, and dual-mode #adr(mode: "document" | "slides") (#adr-document, #adr-slides).

2. Parent-Driven Equal-Height Row Layout Engine (#equal-grid)

  • All multi-column grids (#equal-grid, #bento-grid, #figure-grid, #item-grid, #feature-grid, #split-view, #pro-con, #split-hero, #stat-hero) measure every sibling in each row inside context + layout(size => ...) at exact fractional column widths and stretch shorter siblings automatically.
  • Footers marked with #metadata("floe-footer") stay pinned flush to the bottom border while canvases marked with #metadata("floe-stretch-center") stay vertically centered.

3. Unified Corner-Anchored Bean Row + Stacked Title Geometry (inline-header: false by Default)

  • Across all cards, plaques (title-below: true), figure cards, item cards, bento cells, split views, and pedagogical blocks, top pills/beans are corner-anchored at 9pt from top and 9pt from left/right with top-edge: "cap-height", bottom-edge: "bounds" and baseline: 0pt.
  • Titles stack cleanly on their own full-width row 5.5pt below the bean row, with subtitles 3.5pt below the title—eliminating mid-line badge floating and par.spacing inflation. Pass inline-header: true when single-line inline headers are explicitly desired.

4. Universal Equation Dissection & Colorized #formula-breakdown

  • Replaced domain-specific control tokens with the 6-color universal palette c-term-1..c-term-6 (term-palette) and short splittable highlighters #t1(expr)..#t6(expr) + #math-hl(color, expr).
  • #formula-breakdown colors the display equation on the pedestal to match its breakdown cards and accepts 3-tuple symbols: (($sym$, "Term Name", [Description]), ...) that auto-assign term-palette colors in order.

⚠️ Breaking Changes (Migrating from v0.1.0 to v0.2.0)

  1. Package Version:
    • Update imports from #import "@local/floe:0.1.0": * (or @preview/floe:0.1.0) to #import "@local/floe:0.2.0": *.
  2. Zero Legacy Aliases:
    • Removed all duplicate and backwards-compatibility component aliases so every component has one canonical name:
      • #callout-box → #alert
      • #warning-box, #danger-box, #info-box, #tip-box → #warning, #pitfall, #note, #tip
      • #algorithm-box → #algorithm
      • #proof-sketch[...] → #proof(sketch: true)[...]
      • #numbered-steps → #stepper
      • #side-by-side / #equal-row → #equal-grid
      • #symbol-card → #item-card (inside #item-grid)
      • #labeled-divider → #text-divider (pure text) or #chip-divider (pill chip)
      • #document-hero / #keynote-hero → #document-header / #keynote-header
  3. Domain-Agnostic Equation Color Tokens & Macros:
    • Replaced c-state, c-noise, c-cost, c-sensor, c-input, c-est with c-term-1, c-term-2, c-term-3, c-term-4, c-term-5, c-term-6 (term-palette).
    • Replaced #math-state, #math-noise, #math-cost, #math-sensor, #math-input, #math-est with #t1..#t6 and #math-hl(color, expr).