Skip to content

Releases

Template kit 1.6.3: the preview requests one font stylesheet per family

Choose a tag to compare

@a5rar a5rar released this 02 Nov 17:46
2ea13d6

Fixed

  • The preview loads each of a template's fonts from its own Bunny Fonts stylesheet. It used to
    ask for the heading and body families in one request, and Bunny answers that request from a
    cache keyed on its first family, so the second family often came back as a different one
    (Figtree as Inter, Inter as IBM Plex Sans): the preview, and the gallery posters drawn from it,
    showed body text in a fallback face. A template's own fonts URL with several families is
    split the same way, one request per family, keeping its other parameters.

Compatibility and release

No contract change: templates validate exactly as before and need no edits. The fix is in the
vendored preview renderers (src/vendor/validator/fonts.mjs, preview-v1.mjs, preview-v2.mjs),
matching the platform's live pages, which already request one stylesheet per family. Publish
through the mirror's GitHub Release workflow; the matching platform change is
multi-tenant-services #380, live since 2 November 2026.

Template kit 1.6.2: every option accepts the --name=value form

Choose a tag to compare

@a5rar a5rar released this 24 Oct 14:01
297f8ba

Changed

  • Every option accepts --name=value as well as --name value: the kit's argument parser splits
    a joined option on its first equals sign, so --host=0.0.0.0 binds the preview to the network
    the way --host 0.0.0.0 does, and --out=dist is the same as --out dist. Before this, a
    joined option was read as a flag whose name included the value and the value was lost. The hint
    that dev printed for --host=address is gone because the form now works; a bare --host
    still stops with the hint. The parser lives in src/lib/args.mjs with its own tests.

Compatibility and release

No contract change: templates validate and preview as before, and every spaced option behaves as
it did. Nothing on the platform side is needed for the joined form. Publish through the mirror's
GitHub Release workflow; the matching platform change is multi-tenant-services #356.

Template kit 1.6.1: the sign-in opener and the dev preview bind

Choose a tag to compare

@a5rar a5rar released this 23 Oct 19:15
6e2e93e

Changed

  • p60-template-kit login opens the sign-in page only when the address the platform returned is
    https:, and never through a shell: on Windows it hands the address to rundll32 url.dll,FileProtocolHandler as one argument, elsewhere to open or xdg-open. Any other
    address is left as the printed link.
  • p60-template-kit dev listens on 127.0.0.1 unless --host says otherwise (--host 0.0.0.0
    opens the preview to the network, for a look on a phone), and says so when it is not the
    loopback address. A bare --host, or --host=address, stops with a hint instead of binding
    loopback in silence.

Compatibility and release

No contract change: templates validate and preview as before. A developer who relied on the
preview being reachable from another device passes --host 0.0.0.0. Publish through the mirror's
GitHub Release workflow after the matching platform release (multi-tenant-services #351, the
2026-10-18 audit's L-01 and L-04) is live.

Template kit 1.6.0: the theme CSS boundary

Choose a tag to compare

@a5rar a5rar released this 22 Oct 21:45
e0fd5a9

Changed

  • The validator refuses a closing style tag in any .css entry. The platform inlines
    assets/theme.css into the page's style element, so a </style in the theme would end that
    element and whatever followed would be parsed as markup. The upload intake refuses the same.
  • The inline event handler check treats a slash or a quote before on*= as an attribute
    boundary, as the HTML parser does, so <img src="x"/onerror=...> and <img src="x"onerror=...>
    are refused like <img src="x" onerror=...>.
  • The preview renderers inline the theme through inertInlineCss
    (src/vendor/engine/inline-style.mjs), which escapes </ as <\/: no change to the meaning
    of valid CSS, and a theme can never close the element it is inlined into, in a preview or on
    the platform.

Compatibility and release

Stricter validation only: a template whose theme carries no closing style tag and whose markup
places no event handler attribute is unaffected, and every Port60 template validates unchanged.
Publish through the mirror's GitHub Release workflow after the matching platform release
(multi-tenant-services #343, the 2026-10-18 audit's H-04) is live.

Template kit 1.5.0: form placements

Choose a tag to compare

@a5rar a5rar released this 18 Oct 14:59
1b6181b

Added

  • The form section: a placement (Home and About) that names a form the organisation built
    in Forms through the Pages editor. The section stores formId, formInstanceId and
    formSlug; the form island renders the instance the slug addresses with the respondent
    fields, the questions, the privacy line and the submit. The island's styling API is the
    renderer's p60-form-* classes. The validator accepts the section or the island for the
    forms capability; the preview renders the form fixture only for a matching formSlug.
  • The starter ships sections/form.liquid and declares the section and the island.
  • Content bounds record the 200-character plain-text biography limit on People sections.

Fixed

  • The starter renders complete biographies with line breaks and wrapping instead of italics.
  • Authored output escaping replaces NUL characters so a stored control character cannot
    reach a rendered page.

Compatibility and release

Additive: the section catalogue, manifest schema (sectionPresentation and
sectionHeadingAlignment accept form, at most 17 entries) and the form island entry grow;
nothing existing changes. Templates that do not ship sections/form.liquid are unaffected: the
editor marks a placed form section not visible and the public page skips it. Publish through
the mirror's GitHub Release workflow after the matching platform release
(multi-tenant-services #329) is live.

Template kit 1.4.1

Choose a tag to compare

@a5rar a5rar released this 15 Oct 08:54
4153e9c

Template kit 1.4.1

Synchronises developer previews with the platform SEO/accessibility release:

  • Shared enrolment access-panel spacing, wrapping and keyboard focus.
  • Correct event heading hierarchy and shared map target presentation.
  • Platform-owned prose contrast without duplicated opacity reduction.
  • Regression coverage for preview stylesheet and embedding parity.

No template contract or manifest changes. Existing first-party templates remain
compatible with kit 1.4.0. This patch changes developer-preview styling and does
not publish tenant content or select a new template for an existing website.

Verified in PR #10: 59 tests passed, package dry run passed, and the vendored
stylesheet matches the platform source.

Platform release: Port60Labs/multi-tenant-services#322
Kit changes: #10

Template Kit 1.4.0: Authored Navigation Styles

Choose a tag to compare

@a5rar a5rar released this 11 Oct 15:24
189ae86

Authored navigation styles

Template Kit 1.4.0 matches the deployed platform navigation release (multi-tenant-services PR 305).

  • Declare a suitable subset of Dropdown, Side-opening, Wide dropdown and Menu panel, with a template-owned default.
  • Use shared direction-aware flyouts, viewport-edge reversal, stable pointer travel and keyboard/scroll handling without template JavaScript.
  • Keep existing two-mode artifacts, navigation content and historical v1 contracts intact.
  • Preview fallback-page titles now use the platform's heading hook.

The mirror source matches the reviewed platform; all 54 local kit tests pass. Release through the existing npm trusted-publishing workflow, then validate first-party templates with this registry package before publication. No automatic tenant upgrade is performed.

Template Kit 1.3.0: Editor Design Flexibility

Choose a tag to compare

@a5rar a5rar released this 03 Oct 23:36
98aac54

Editor Design Flexibility

Requires the compatible platform deployed from multi-tenant-services PR281.

  • Exact author-bounded heading sizes, section spacing, image overlays, colour treatments and layouts.
  • Optional introduction photographs and shared Header/Footer presentation groups.
  • Matching preview lifecycle, explicit map selection and fail-closed capability validation.
  • Updated developer guidance, scaffold and conformance tests.
  • Patched fast-uri dependency.

Full kit tests and CodeQL pass. Historical v1 contracts and existing immutable template releases are preserved.

First-party templates are released separately after registry consumer verification. This package does not upgrade tenant template selections or publish website drafts.

Template kit 1.2.1

Choose a tag to compare

@a5rar a5rar released this 30 Sep 23:43
e4e60e7

Adds the compatible host-owned hero playback hook and designer preview geometry for photo-only carousels. Templates can reveal playback on hover or keyboard focus while keeping it available on touch devices. Existing campaign carousels and the v1 contract are unchanged. The supporting platform deployment has completed. Published by the repository's npm trusted-publishing workflow.

1.2.0: editor presentation capabilities

Choose a tag to compare

@a5rar a5rar released this 30 Sep 15:01
179b98e

Editor presentation capabilities

This release matches the deployed Port60 host from multi-tenant-services PR #250.

  • Explicit per-section heading alignment with bounded desktop placement.
  • Declared Simple/Mega header navigation modes without changing the menu tree.
  • Optional visibility controls for existing collection links.
  • Exact-version hero photograph capacity, including rendered conformance checks.
  • Matching previews, scaffold metadata and generated agent guidance.

These controls require template opt-in and working rendering. Missing capabilities do not
silently enable controls; historical template versions and saved photographs are preserved.
The visitor language switch remains dormant while organisation language/RTL support stays intact.

The source mirrors the reviewed platform kit. Dependencies, OIDC publishing and historical v1
contracts are unchanged. Kit tests, package inspection and release CI pass.

First-party templates will adopt this registry release in a separate immutable release.