Add ram_type (DDR4-2666 non-ECC UDIMM) to mf01 and mf02 frontmatter, and
set mf00's placeholder status to staging so the overview index regenerates.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds an `if: failure()` step that POSTs to ntfy.sh on a failed push-to-main
run. Topic comes from the NTFY_TOPIC secret so it stays out of the public
repo; missing secret silently no-ops via `|| true`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removed from per-host frontmatter, the index column, and the Specs table.
Model values kept churning (case manufacturer vs. "custom") without adding
useful information.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mf00.md used bare ? in YAML (a complex-key indicator), breaking gen_overview.py.
Quoted the placeholders and taught fmt_cpu/fmt_ram/fmt_storage/fmt_nic to render
string values literally so unknown specs show as "?" in both the per-host Specs
table and the hardware index. Also regenerates docs/hardware/index.md to clear
the accumulated drift (mf02 16 GB, mf04 entry, mf00 custom).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sidebar nav had Services after the previous commit, but the home page
body still only mentioned Hardware and House rules. Add a matching
bullet so visitors land somewhere obvious.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirror the auto-indexed per-host pattern for a new docs/services/
category, seeded with the six things currently deployed on or around
makerfloss.eu: docs, slides, forgejo, gandi-dns, marp, mermaid.
Generator/hook generalisation:
- scripts/gen_overview.py: replace the hardcoded `hostname` check
with a configurable `key_field` (default: hostname). Add a generic
`key-link` column kind (replaces the old `hostname-link`) and a
`url-link` kind that renders the value as a clickable link.
- scripts/overview_config.yml: declare hardware's key_field, then add
a `services` block (key_field=name, its own kind/status enums,
grouped by kind for the index table).
- scripts/mkdocs_hooks.py: route by `page.file.src_uri` so each
hardware/* page gets a "Specs" table and each services/* page gets
a "Service" table; both share the helpers in gen_overview.
Wiring:
- Makefile: docs-index and docs-check now regenerate and drift-check
both indices.
- .forgejo/workflows/docs.yml: same on the CI runner.
- mkdocs.yml: add Services to nav.
- README.md, CLAUDE.md: list services/ in the repo-layout block.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file is pre-implementation reference material for the Marp +
Mermaid pipeline, not site content, so it belongs under notes/dev/
alongside the existing plans/ and specs/. Renamed to kebab-case to
match the filename convention.
MARP-MERMAID-Readme.md -> notes/dev/marp-mermaid-setup.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Rewrite the 84-byte Danish placeholder README.md into a proper
English entry point: what this repo is, live URLs, layout, build
instructions (make targets), and conventions, with pointers to
CLAUDE.md for the long form.
- Add short READMEs to notes/, sandbox/, and scripts/ so each tree
documents its own purpose at the boundary where someone is likely
to land on it via the Forgejo web UI or a clone.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adopt one filename convention everywhere except hardware host pages
(those are pinned to their hostnames by the index validator):
- ASCII lowercase
- kebab-case word separator
- dated docs: YYYY-MM-DD-label.md (hyphen between date and label)
- English regardless of content language
Renames:
docs/makerFLOSS_house_rules.md -> docs/house-rules.md
docs/infrastruktur/ -> docs/infrastructure/
docs/infrastructure/vps-og-dns.md -> docs/infrastructure/vps-and-dns.md
docs/presentations/2026-05-11_messaging.md -> docs/presentations/2026-05-11-messaging.md
docs/presentations/2026-05-11_SoMe-taxonomi.md -> docs/presentations/2026-05-11-social-media-taxonomy.md
notes/todo/2026-04-14_todo.md -> notes/todo/2026-04-14-todo.md
notes/todo/OM_services.md -> notes/todo/om-services.md
notes/todo/indkøbsliste.md -> notes/todo/wishlist.md
notes/communications/2026-03-16_facebookpost.md -> notes/communications/2026-03-16-facebook-post.md
Other touches:
- Document the convention in CLAUDE.md under Working Norms.
- Refresh the stale Repository Structure block in CLAUDE.md to reflect
the docs/ vs notes/ split introduced in f6d589e.
- Update the House rules link in docs/index.md and the nav entry in
mkdocs.yml to the new house-rules.md path.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The docs/ tree previously conflated published-site content (3 pages
were in mkdocs.yml nav) with working notes (~18 files that just sat
in the repo). Restructure so each tree means one thing:
- docs/ everything here is built and shipped to docs.makerfloss.eu.
Adds docs/presentations/ for the two Marp decks
previously living under docs/møder/.
- notes/ repo-only working material, not built. Contains
meetings/, todo/, dev/ (was docs/superpowers/), and
communications/ (the launch Facebook post).
- sandbox/ test-mermaid.md, the Marp/Mermaid pipeline sandbox.
Other touches:
- Drop "_noter" suffix on meeting filenames; drop "_presentation"
from the messaging deck's basename for symmetry with SoMe-taxonomi.
- Update CLAUDE.md and docs/index.md path references.
- Drop the now-redundant --exclude-dir=superpowers from
build-slides.sh since superpowers/ is no longer under docs/.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add 'touch display med kalender etc.' to the OM services wishlist.
- Reset indkøbsliste into an empty wish/get list ('Ønske/skaffe-liste').
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Delete two stale single-meeting todos: 2026-03-16_todo.md and 2026-05-05.md.
- Rename `2026-04-14 TODO.md` -> `2026-04-14_todo.md` to match the
underscore convention used by the other dated files, and update the
CLAUDE.md reference.
- Remove the two Marp/CSS fit-test sandboxes (labdesign-fit-test.md
and 2026-05-11_messaging-presentation-fit-test.md); the responsive
experiments were never folded back into the canonical decks.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add scripts/mkdocs_hooks.py: on_page_markdown hook that prepends
`# {hostname}` + a Specs table built from the YAML frontmatter.
Reuses fmt_cpu/fmt_ram/fmt_storage/fmt_nic from gen_overview.py so
the host page and the index table stay in sync.
- Wire the hook into mkdocs.yml.
- Demote `# Notes` / `# ToDo` to `##` in the five host source files so
each rendered page has a single H1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add `staging` to allowed status enum so mfXX hosts validate.
- fmt_nic and fmt_storage now accept lists (mf00 has 3 NICs and 4 drives).
- Rename makerfloss.md -> makerfloss.eu.md so filename matches the FQDN.
- Regenerate docs/hardware/index.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bootstraps an MkDocs Material documentation site (rendered to
docs.makerfloss.eu by the Forgejo Actions runner). The first feature
is an auto-generated hardware overview built from per-host YAML
frontmatter blocks under docs/hardware/.
- mkdocs.yml, requirements.txt: MkDocs Material 9.5 + pyyaml
- Makefile: docs-index | docs-build | docs-serve | docs-check
- scripts/gen_overview.py: stdlib + pyyaml generator, deterministic and
offline. Reads scripts/overview_config.yml — category-driven so
services/vms can plug in later without touching the script.
- scripts/overview_config.yml: hardware schema and index layout
- docs/hardware/{makerfloss,fisi,tembo}.md: 3 sample entries
- docs/hardware/index.md: GENERATED, committed (CI fails on drift)
- docs/index.md: site landing page
- .forgejo/workflows/docs.yml: drift-check + mkdocs build --strict +
rsync site/ to /srv/docs-makerfloss/html on push to main
- .gitignore: site/, .venv, __pycache__
Schema:
- hostname, kind, status (required; kind/status are enums)
- model, location, cpu, cpu_cores, cpu_threads, ram_gb, storage_gb,
storage_type (enum), storage_notes, nic_gbps (all optional)
- Filename stem MUST equal hostname (enforced by generator)
- Extra optional fields are accepted silently and live on the per-page
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds .forgejo/workflows/build-slides.yml triggering on push to main and
manual dispatch. Job runs in node:20-bookworm-slim, installs marp-cli +
python3, mounts /srv/slides/html into /output, and invokes
build-slides.sh with OUTPUT_DIR=/output.
build-slides.sh now honors OUTPUT_DIR/SLIDES_TITLE/REPO_WEB_URL env
overrides (defaults preserve local-dev behavior), wipes stale .html
before each build, and regenerates a styled index.html listing every
deck — replacing the equivalent logic from the old webhook update.sh.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds -fit-test copies of the labdesign and messaging decks that apply
container-query font sizing (option 5) and a max-height cap on mermaid
SVGs (option 4) so we can compare overflow behavior side-by-side
against the originals.
Includes a comment explaining why option 2 (custom canvas size) cannot
be demoed inline and would require registering a custom theme via
marp.config.mjs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add .mermaid svg CSS to scale diagrams to fit slide bounds
- Split Requirements into Requirements+Details / Constraints
- Split Proposals into Short term / Midterm
- Switch Lab Diagram to graph LR (left-to-right fits the
Internet→VPS→Firewall→Lab flow and uses vertical space better)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Two 4-column tables replace the box-drawing character grid, which
rendered poorly in the gaia theme's proportional font. Dense class
applied to keep both tables within slide bounds.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Messaging deck:
- Slide 5: remove redundant E2EE column (all apps have it), add italic note
- Resources: shorten meshtastic link text, apply .dense class
- Add .dense CSS class (0.5em) for slides that need extra reduction
SoMe deck:
- Apply .dense class to The Categories and Messaging slides (7 rows each)
- Add .dense CSS class definition
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Language rule updated: adds commits, changes Danish exception to
meeting notes (was: service UIs)
- Add Git norms: trunk-based, feature branches, simple messages
- Add AI policy: allowed but reviewed, no secrets in commits
- License: FLOSS by default (was: MIT by default)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tables with 6-9 rows overflowed the 720px slide height and scroll
events were captured by Bespoke.js for slide navigation instead.
0.65em with tighter padding keeps all tables within bounds.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signal Under the Hood: sequence diagram shows the message path and
what the server can/cannot see, clearer than ASCII art.
Matrix Federation: graph shows client→homeserver→federation topology,
replacing the ASCII box diagram.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>