From 850664298cf3795601263541ae7a6dd244cb3fe3 Mon Sep 17 00:00:00 2001 From: Adnaan Badr Date: Sun, 16 Aug 2026 12:45:46 +0000 Subject: [PATCH] docs(landing): give the last section a subject MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Everything else" over "The rest of the docs covers the ordinary screens." was a heading about the documentation, not about the software. It told a reader nothing they hadn't already assumed. The reason it couldn't say anything: the section held three different taxonomies. The eyebrow was a non-label, the heading described the docs, the lead listed app types (admin panels, CRUD, dashboards) and the eight links listed capabilities (uploads, pubsub, sessions, errors, CLI, client, observability, scaling). No heading summarises three subjects. The heading now names two of those capabilities and says they're here. The lead names the rest. Together they cover the grid, which is what makes the section readable as one thing. Two of the eight links contradicted it. "Shared views / Subscribe & Publish" is what the Multi-user section demonstrates, and "Forms & errors" is what the Validation section demonstrates — neither is something the wall skipped. Both references now sit inside the section that shows them off, where a reader who wants the API is already standing. Their grid slots go to two genuine gaps: auth, which the old lead named without ever linking, and navigation, which nothing on the page mentioned. One draft of the lead promised "sessions that outlive a restart". That is wrong by default: reference/session documents the SessionStore as "in-memory or Redis", and every persistence claim on that page is scoped to surviving a page refresh, not a process restart. Cut rather than qualified — the sentence did not need it. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_0166MK1arBYbVZq6wfm8EsQZ --- content/index.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/index.md b/content/index.md index bfc252f..4aaae71 100644 --- a/content/index.md +++ b/content/index.md @@ -35,7 +35,7 @@ layout: landing Pending state Multi-user How it compares - Everything else + What the wall skipped
@@ -206,7 +206,7 @@ func main() {

The HTML rule runs again in Go.

Both halves are in the app above. The input carries required, and ctx.ValidateForm() re-runs exactly that rule on the server — a client that skipped it, scripting off or a direct POST, gets the same answer. Then strings.EqualFold(name, "admin") adds the rule HTML has no way to state.

-

The template side is the other two lines you read: {{.lvt.AriaInvalid "name"}} marks the field, {{.lvt.ErrorTag "name"}} is where the message lands. Returning an error from Greet is the whole mechanism — there's nothing to route. Scroll up and type admin, or try the smaller app here.

+

The template side is the other two lines you read: {{.lvt.AriaInvalid "name"}} marks the field, {{.lvt.ErrorTag "name"}} is where the message lands. Returning an error from Greet is the whole mechanism — there's nothing to route, and the error handling reference has the rest. Scroll up and type admin, or try the smaller app here.

greet-validate · the same pair, on its own
@@ -310,7 +310,7 @@ func main() {
app.go · the server can start the same cycle
sess.TriggerAction("ServerRefresh", nil)
-

You already read the WithTopicACL in main that admits "wall" — developer topics are deny-all until you name one. This is the same publish path with no user action behind it: the "the server said hi at …" line in the cards above, pushed on a timer.

+

You already read the WithTopicACL in main that admits "wall" — developer topics are deny-all until you name one. This is the same publish path with no user action behind it: the "the server said hi at …" line in the cards above, pushed on a timer. The pubsub reference has the topic rules and the ACL in full.

@@ -334,14 +334,14 @@ func main() {
-
Everything else
-

The rest of the docs covers the ordinary screens.

-

Admin panels, internal tools, CRUD, dashboards, approvals, uploads, auth, and the occasional shared view. That is what this is for.

+
What the wall skipped
+

Your app has file uploads and a login. Both are here.

+

The wall is one screen, and it needed neither. Sessions, navigation, scaling and something to look at when it falls over at 3am are below too. Admin screens, internal tools, CRUD and dashboards are what this is built for.