diff options
Diffstat (limited to 'AGENTS.md')
| -rw-r--r-- | AGENTS.md | 28 |
1 files changed, 5 insertions, 23 deletions
@@ -209,11 +209,9 @@ internal/web/ server.go (host router, middleware, render helpers) editor's HTML preview, because the session cookie is `SameSite=Lax` and an opaque origin would not send it for those images; safe only while no header module kind is owner HTML (all four are template-escaped) and there is no - `allow-scripts`. The frame runs no scripts, so the dashboard's script folds - the menu inside it the way the blog's own script does (`fitFrame`), sizes - the frame to the header, and re-runs on the frame's `change` (the fold - button) and on the Wide/Phone toggle (the frame at 380px, so blog.css's - phone rules apply). + `allow-scripts`. The dashboard's script sizes the frame to the header + (`fitFrame`, on load and on the Wide/Phone toggle — the frame at 380px, so + blog.css's phone rules apply). - **Theme** (`web/theme.go`): struct stored as jsonb on `settings.theme`. `ParseTheme` merges over `DefaultTheme()` and `normalize()` clamps every value to an allowlist (hex colours, enum strings, uuid image ids, column @@ -244,8 +242,7 @@ internal/web/ server.go (host router, middleware, render helpers) unscoped (a column menu's block links centre their text, as before). They replaced a `nav_style` select (`normal` | `uppercase` | `plain`), which `ParseTheme` still decodes and maps onto the switches — `uppercase` was also the small size — (`omitempty`, so - the next save drops it). `NavFold` folds the header menu into a button - (`NavFoldLabel`: `icon` | `text` | `both`), see Layout. `TitleRule` (`none` | `line` | `dots` | `dots2` | `stripes`) is the header + the next save drops it). `TitleRule` (`none` | `line` | `dots` | `dots2` | `stripes`) is the header rule's kinds, plus a double dotted row (`dots2`: the border and an absolutely positioned `::after` with a second one 2px above), under page and post titles (`.page-title`, `.post-title`): a body class from `Theme.TitleRuleClass` (`titles-<kind>`) that blog.css draws @@ -316,22 +313,7 @@ internal/web/ server.go (host router, middleware, render helpers) browsers without `min()` — wide screens only, backgrounds untouched); below 700px `.cols` becomes block flow so the order is main → left → right → footer. Everything is rendered by the `module` template in - `layouts/blog.html`; the header by `siteheader` (the banner, then the - modules). **Menu fold** (`theme.nav_fold`, `Layout.Fold`/`BurgerAt` from - `buildLayout`): the header menu turns into a button when its links do not - fit. The button (`burger` template, a `<label>`) is carried by the title or - logo block just before the menu (`.has-burger`, the label absolutely - positioned at the block's right — `header-center` pads the other side so - the brand stays centred) or by the menu bar itself; a logo module without a - logo renders nothing, so it cannot host it. A hidden, focusable checkbox - (`#nav-toggle`) comes first in `.site-header` and is the open/closed state, - so `:checked ~` reaches both blocks and no script is needed to open the - stacked panel (links block-level, the search box on top). Folding itself: - the inline script after the header (guarded; old browsers skip it) drops - `.nav-auto` — the no-script fallback blog.css folds under 700px — and sets - `.nav-folded` whenever a link's `offsetTop` differs from the first's, i.e. - the row wrapped; re-run on `load` and `resize`. The `.nav-folded` and - `@media … .nav-auto` rule blocks in blog.css must stay identical. New blogs get `insertDefaultModules` (title + menu + `layouts/blog.html`. New blogs get `insertDefaultModules` (title + menu in the header, RSS in the footer) — keep it in step with the layout migration's defaults. - **Menu** (`menu_items` table, `store/menu.go`): the single ordered list |
