Skip to content

Say what tsbb is: a platform with front doors, not only a forum - #19

Merged
ralyodio merged 1 commit into
mainfrom
feat/platform-positioning
Sep 12, 2026
Merged

Say what tsbb is: a platform with front doors, not only a forum#19
ralyodio merged 1 commit into
mainfrom
feat/platform-positioning

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

tsbb.dev said "A TypeScript bulletin board" and stopped there. The API, the CLI, the MCP server, the installable app, the terminal client, runtime plugins and self-updating installs were either buried in the README or nowhere on the site at all.

What changed

The claims are data now. apps/server/src/platform.ts holds one list of front doors, each with a status. live means it is in this repository today; planned renders as a badge with no link. Four surfaces render that list instead of writing their own:

  • the front page, in a panel below the board statistics (guests only)
  • /about, with a new "What is it built on?" section
  • /docs, at the top of the index
  • /llms.txt, as a "What this board can do" section

Peer to peer is the only planned entry. There is no node-to-node code in the repository, so it is marked planned everywhere it appears and links nowhere. The README says the same thing in as many words.

New guides for the front doors that had none: docs/AGENTS.md, docs/PWA.md, docs/UPDATES.md, docs/SKINS.md. Served at /docs like the rest, so they are in llms-full.txt and the sitemap too.

README leads with the front-door table rather than the feature list.

Backed by code

Every claim was checked against this repository before it was written:

Claim Where it lives
REST API + OpenAPI apps/server/src/routes/api.ts, openapi.ts
CLI with --json apps/cli/src/remote.ts
MCP over HTTP and stdio apps/server/src/routes/mcp.ts, apps/mcp
Installable PWA apps/server/src/routes/pwa.ts (manifest, worker, icons, /offline)
Machine files apps/server/src/routes/discovery.ts
Plugins, no build step packages/plugin-api, packages/plugin-host, plugins/
Self-updating apps/server/src/updates.ts, packages/core/src/updates.ts
Three skins + tsbb-tui packages/ui/src/styles, apps/tui
Feeds both ways routes/discover.ts, packages/core/src/feed-sources.ts

Not backed by code, and not claimed as a feature: peer to peer / distributed boards. Nothing in the repository connects one board to another, federates, or syncs between nodes.

Also here

  • board.showPlatform (Appearance, on by default) turns the front-page panel off for a board whose readers are not looking to run one of their own. Members never see it either way.
  • llms.txt link labels come from each document's <h1> rather than the first clause of its blurb, which printed the whole sentence when a blurb had no colon.
  • The docs page footer line used a style="…" attribute, which this board's CSP refuses, so it had been rendering unspaced. It is a class now.

Tests

pnpm test: 199 pass, 0 fail (193 before, 6 new). pnpm typecheck: clean. The formatter was not run, per the repo's state at HEAD.

test/platform.test.ts is the guard on the copy: every live claim must link at something answering 200, a planned one must have no link and must render as planned on /, /about and /docs, llms.txt must say the same thing the page does, and the grid must carry no inline style attribute.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QuUkTrofSjQ15j79mRuy4f

The front page, the About page, the docs index and llms.txt each described
the board in their own words, and between them they undersold it: an API, a
CLI, an MCP server, an installable app, a terminal client, runtime plugins
and self-updating installs were either buried in the README or nowhere.

The claims now live in apps/server/src/platform.ts and every surface renders
the same list. Each entry carries a status: `live` means it is in this
repository today, `planned` renders as a badge with no link. Peer to peer is
the only planned one, and it is marked as such on the front page, on About,
in the docs index and in llms.txt, because a roadmap item written as a
feature is the one lie a marketing page tells by accident.

New documentation for the front doors that had none: docs/AGENTS.md (what
the board publishes for machines, and why agent-ok and human-ok are the same
board), docs/PWA.md, docs/UPDATES.md and docs/SKINS.md. They are served at
/docs like every other guide and go into llms-full.txt and the sitemap.

test/platform.test.ts holds the copy to the code: every live claim must link
at something answering 200, a planned one must have no link and must render
as planned everywhere, llms.txt must say the same thing as the page, and the
grid must carry no inline style attribute.

Also here, because they were in the way:

- `board.showPlatform` (Appearance, on by default) hides the panel for a
  board whose readers are not looking to run one. Members never see it.
- llms.txt link labels come from each document's own <h1> rather than the
  first clause of its blurb, which for a blurb with no colon printed the
  whole sentence as the link text.
- The docs page footer line used a style="…" attribute, which the board's
  own CSP refuses, so it had been rendering unspaced. It is a class now.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QuUkTrofSjQ15j79mRuy4f
@ralyodio
ralyodio marked this pull request as ready for review September 12, 2026 11:23
@ralyodio
ralyodio merged commit 3584e01 into main Sep 12, 2026
3 checks passed
@ralyodio
ralyodio deleted the feat/platform-positioning branch September 12, 2026 11:23
@ralyodio ralyodio mentioned this pull request Sep 12, 2026
ralyodio added a commit that referenced this pull request Sep 12, 2026
Bump every workspace package.json from 0.5.1 to 0.6.0. Carries #19 (platform positioning).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QuUkTrofSjQ15j79mRuy4f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant