Releases: rotecodefraktion/f451
Release list
f451 1.2.0 — Theming
No breaking changes. Without F451_INSTANCE_CONFIG and without theme files,
the appearance is unchanged.
Added
- Themes per instance and space —
_meta/theme.yamlin the instance repo
(new envF451_INSTANCE_CONFIG) and in each space repo. Token values are
resolved per token and per mode, validated against a closed grammar and
delivered inline in the page head. Rights, history and review come from Git. - Personal theme — "My settings" stored with the account (migration
0013, tableuser_settings), applied on top of instance and space in every
space. Download and upload as YAML in the_meta/theme.yamlformat;
adjustments from the old browser-only preview can be taken over once. - Templates —
_meta/themes/<slug>.yamlper instance and space,
selected withuse, and five built-in ones: fokus, klar-warm,
system-raster, werkbank, rotecodefraktion. - Corridors —
--measure,--measure-wide, grid widths and
--control-hare settable within fixed ranges; breakpoints stay fixed. - Brand — name, logo and favicon per instance, name and logo per space
(SVG only, 256 KB). - Contrast thresholds — per role, set instance-wide in
_meta/contrast.yaml(1.5–7.0) against a fixed AA reference. Below the
threshold blocks saving an instance or space theme; personal themes only
get warnings. - Appearance settings page —
/einstellungen/erscheinungsbildwith the
scopes My settings, Instance and each writable space, origin marks,
template picker, contrast feedback and a phone layout. - API —
/api/theme,/api/spaces/:space/theme,/api/me/theme,
/api/theme/resolved,/api/theme/scopes,/api/theme/editor,
/api/theme/contrast, the template library routes and the brand routes.
f451 1.1.1 — Versions start at 0.1.0
No breaking changes. implicitVersion and implicit are new optional API fields.
Fixed
- Versions in a versioned space: 1.0.0 is a release the reviewer chooses, not
automatic. A new page's first release offers 0.1.0 (default) or 1.0.0; until
now it always became 1.0.0. A page that already existed when versioning was
turned on counts as 0.1.0, its first release offers 0.1.1, 0.2.0 or 1.0.0,
and its original state appears in the version list as the initial version.
Drafts have no version; nothing is written to Git until a release. - Review page: section titles use one font and style, and the version box's
title sits inside the box instead of on its border.
f451 1.1.0 — Classifications and release archive
No breaking changes. Spaces without a classification: block behave as before.
Added
- Security classifications — four classes per page (public, internal,
confidential, strictly confidential), shown as a chip and, for strictly
confidential pages, a banner. Each space sets a default and a maximum in
_meta/schema.yaml; the editor select is limited to the space maximum.
Search hides strictly confidential pages and drops the snippets of
confidential ones; the graph hides strictly confidential neighbours. API
tokens carry a classification limit (default: internal). Existing tokens get
internal by migration, which only matters in spaces that turn classifications
on. - Release archive — "Freeze as release" in the review and in
release_page
creates an immutable copy of the page with its attachments under
<page>/_releases/<version>/. Releases open in a read-only view with
metadata, are marked in the version list, and the page header links to the
newest one. AI agents read a release withread_page(version)via MCP.
Requires a versioned space.
Fixed
- Version and release entries in the page header now look like links.
f451 1.0.0 — Documents without handcuffs.
First release. f451 is a wiki for documentation that lives in Git:
every space is a repository on Forgejo or GitHub, every page a Markdown file,
every change a draft, a review and a release.
Features
- Git as the source of truth — spaces are repositories, pages Markdown files
with front matter; the database is only an index and can be rebuilt from Git. - Reading — page tree, full-text search, table of contents, broken-link
report, knowledge graph; light and dark mode; German and English interface;
phone layout. - Writing — WYSIWYG and raw Markdown editor with autosave and local buffer,
visible conflicts instead of silent overwrites, templates, metadata schema per
space, draw.io and Excalidraw diagrams editable inside the page, YouTube. - Review instead of direct writes — draft (branch) → review (pull request)
→ release (merge), for people and AI agents alike; visual diff; optional page
versioning with change notes. - Permissions from the Git provider — no role system of its own; writes use
the author's own Git account. - Sign-in — any OpenID Connect provider (Microsoft Entra ID, Forgejo,
Keycloak, …) with a configurable button label, one-step sign-in and linking
with Forgejo, GitHub sign-in; e-mail fallback for Entra ID. - AI agents — MCP service with personal API tokens: read, search, write
drafts, generate diagrams, request reviews. - Look — design tokens, operator stylesheet (
F451_CUSTOM_STYLESHEET),
self-hosted typefaces, the f451 mark and favicon. - Operations — Docker Compose stacks for Forgejo and the app, configurable
ports and cookie prefix for several instances on one host, reindex and drift
reconciliation, graceful API shutdown, a reproducible public demo
(deploy/demo/) with nightly reset and automatic deploys. - Container images —
ghcr.io/rotecodefraktion/f451-web,-api,-mcp,
built on every release tag.
Fixed since the first public snapshot
- A page id used in a second space no longer moves the page between spaces;
the conflict is reported by the reindex (#7). - Callout titles and the YouTube label follow the interface language (#9).
- No review or release for a draft without changes (#11).
- Discarding a draft that no longer exists leaves the editor instead of asking
to retry (#22). - Requests are no longer lost while containers are replaced; no orphan draft
branches after an interrupted page creation.
License
f451 License 1.1 — PolyForm Shield 1.0.0 with additional conditions: free to
use, change and share, also commercially; a separate license is needed only to
sell f451 or offer it as a paid hosted service. See LICENSE.md.
Try it: https://f451.rotecodefraktion.de (accounts on the sign-in page)
Images: ghcr.io/rotecodefraktion/f451-web:1.0.0, -api:1.0.0, -mcp:1.0.0