Commit Graph
15 Commits
Author SHA1 Message Date
docs-agent 4f07c2d3ac docs site: content-hash the site's own stylesheets (cache-proof URLs)
brand.css and typography.css are referenced at fixed URLs via extra_css, so a
warm browser cache could keep serving the previous stylesheet after a deploy.
Add on_post_build to publishing/hooks.py: at build time copy each extra_css
file to <name>.<sha256-8>.css in the output and rewrite the <link> in the built
HTML. Any content change now yields a new URL. Sources keep their names; hashed
copies exist only in the build output and stale ones are pruned on rebuild.
2026-11-04 00:23:28 +00:00
inference-bot 492a64fa43 docs site: gentler header -- a pale wash instead of a saturated green bar
The light scheme filled the header and tabs with green-deep, which read as heavy. They now
use the homepage's "open source" pill colour #e8f5e8 with ink text, and the deeper greens
are kept for accents -- links, active navigation and rules -- rather than as background
fills. The dark scheme is unchanged.
2026-11-03 23:57:36 +00:00
inference-bot a81249eda2 publishing: deploy the docs to their own Surfer app at docs.inference.coop
The docs now have a dedicated Cloudron app (io.cloudron.surfer,
location docs.inference.coop, id 85b7ce06-e2af-49a4-bd4f-a9c2e692e3ab)
serving /app/data/public. deploy.sh writes there and nowhere else; the
two copies inside the marketing Surfer app (public-docs and
public/docs) have been deleted, so there is one canonical location.

SURFER_APP now defaults to docs.inference.coop and DOCS_DEST to
/app/data/public.
2026-11-03 21:39:41 +00:00
co-op agent 1c863ddb95 docs site: gentler colours from the co-op design system, dark mode off Material slate
Light: warm neutrals (#e4e0d8 borders, #f4f2ec code, #6b7a62 muted) instead of
near-blacks; links use the dashboard's #4e7a4d (4.7:1 on cream).

Dark: replace Material's cold blue-grey slate (#1e2129 page) with the chat
overlay's deep-pine palette (#22271f page, #e8f5e8 text, #7ab87a accent), so a
dark screen reads as the co-op's green identity rather than stock Material.
2026-11-03 21:34:46 +00:00
inference-bot 4e44793aaf docs site: scale headings with the viewport so the title stops breaking mid-word
At 360px wide the h1 was still 52px, because Material keeps a 20px root on mobile, so
"Cooperative" (297px at that size) left only ~30px of slack before breaking mid-word.

Headings now use clamp() to track the viewport and reach the same desktop sizes, with
word-break: normal, hyphens: none and text-wrap: balance so wrapping happens at the
space and the two lines are balanced rather than one word sitting alone.
2026-11-03 20:50:27 +00:00
inference-bot bf356cd9a3 docs site: legible header in dark mode, typography in its own stylesheet
Dark mode: the slate scheme set the header to #3f6b3e, a dark green on a dark page, so
the bar disappeared into the background. It is now green-mid with near-black text.

Typography moves to publishing/typography.css, loaded after brand.css, and declares
Figtree on the elements themselves -- Material defines --md-text-font-family on <body>,
so a :root value loses to it by DOM proximity. Heading colours are scoped to the light
scheme, since ink is unreadable on the dark one.
2026-11-03 20:36:45 +00:00
inference-bot 9b66409343 docs site: make Figtree actually apply, and size headings like the website
Material emits its own font variables and defines --md-text-font-family on <body>,
so brand.css's :root value lost to it by DOM proximity -- the same failure mode as the
palette, and the reason the site rendered entirely in the system font stack with
Material's default 32px/300 headings.

theme.font: false stops Material supplying typography, and brand.css now declares the
font on body, the navigation, the header and every heading, with heading sizes closer to
the website. Figtree is still self-hosted from publishing/fonts.
2026-11-03 20:35:20 +00:00
inference-bot 3cc32708d9 docs site: deploy from a dedicated clean clone; poll against last deployed commit
- docs-deploy-poll.service and the receiver now build from
  /home/ubuntu/.docs-publisher, so uncommitted edits in a working clone can
  never block a deploy
- the poller compares origin/main against the last DEPLOYED commit (state
  file), so a push made from the deploy clone itself also triggers a deploy
2026-11-03 19:48:34 +00:00
inference-bot f1be37a725 docs site: drop host names from a brand.css comment so the no-external-host grep reads clean 2026-11-03 19:43:00 +00:00
inference-bot 8b1f6d4a65 docs site: release the deploy lock after each deploy
The receiver took the deploy lock but never released it, which starved the
poller (flock -n failed instantly on every cycle).
2026-11-03 19:40:36 +00:00
inference-bot 387269e245 docs site: rewrite directory-style links to their landing pages
A MkDocs hook turns links like [incidents/](incidents/) — which Gitea
renders as a directory listing but a static site would resolve against the
page URL — into links to the generated landing page for that directory.
2026-11-03 19:37:54 +00:00
inference-bot 2d3291d493 docs site: generate landing pages for documented directories
infrastructure.md links to incidents/ the way Gitea renders directories.
A static site has no directory listing, so the build now generates a small
landing page (with each document's own title) for any documented directory
that lacks an index. Build artifact only — no document is touched.
2026-11-03 19:35:45 +00:00
inference-bot fa1f38ced2 docs site: serve a robots.txt at the site root 2026-11-03 19:31:12 +00:00
inference-bot 44f040c27f docs site: add push-to-main polling deployer (agent host)
The agent host's cloud firewall only admits inbound SSH, so the registered
Gitea webhook cannot reach the receiver. docs-deploy-poll.service polls
Gitea every 60s over outbound HTTPS and deploys whenever main moves; the
webhook stays wired for the moment a port is opened in the Infomaniak panel.
Both serialise on the same deploy lock.
2026-11-03 19:29:39 +00:00
inference-bot 62158c16cc docs site: add MkDocs publishing layer (build, deploy, push-to-main webhook)
Renders the repository's Markdown (which stays where it is) into a
member-readable static site with Material for MkDocs: co-op brand colours
and logo, self-hosted OFL Figtree, offline search, no external hosts.

- publishing/build.sh   stage .site-src, render .site-build (mkdocs --strict)
- publishing/deploy.sh  write the build into the Surfer app container
- publishing/webhook-receiver.py + .service   Gitea push hook on main
                        triggers pull -> build -> deploy (agent host, no new
                        Cloudron app)
2026-11-03 19:26:21 +00:00