Repository navigation
Show the integration contract in the panel, on a Documentation page drawn from the file the binary ships - #59
Merged
Merged
Conversation
…es, a code block's language and links within the text
…when the browser refuses
…ead the bridge's events and exports from its own script
… txAdmin's events, as it was launched
…oes of it to the accounts that see the dashboard
…ct, each section linked and found with Ctrl K
…o 7, which order and fill their events otherwise
# Conflicts: # web/src/shell/CommandPalette.test.tsx # web/src/shell/nav.ts
This was referenced Nov 11, 2026
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Seven commits and two merges of
main. The integration contract,resource/CONTRACT.md, could only be read in the repository. A Documentation page now draws it in the panel, from the file the binary ships, with what this server does of it: the contract's version, the name the bridge took for this start, and whether txAdmin's events are raised. The page writes none of the contract's text: an event or an export added toCONTRACT.mdshows on the page without a change to the panel, and a test fails when the bridge raises an event, or has an export, that the contract does not document.What changed
One Markdown reader (
2fbe443)web/src/lib/markdown.ts. It also reads tables (a|inside a code span stays in its cell), the language of a fenced block, and links within the text (#bans,observer_example), which it keeps apart from addresses. The release notes now draw a table; a link within their own text shows as its words.One copy hook (
0b03fdf)web/src/lib/useCopy.tscopies, says "Copied" for two seconds, or says the browser refused (there is no clipboard outside a secure context).CopyField,CopyValueand the new page use it.The contract in the binary (
aeb54b0)crates/observer-fxserver/src/contract.rsembedsresource/CONTRACT.mdand the files ofresource/observer_example, and reads from the bridge's own script the events it raises (itsEVENTStable, and the events it raises by name:observer:playerRefused,observer:playerBanned) and its exports with their parameters.What the running server was launched with (
bbfee6e)Statusgainstxadmin_events: whether the server that runs now raises txAdmin's events, as it was launched. A change of the launch setting applies from the next start, and until then the status still gives what the running server does.GET /api/docs/integration(3c01883)Sessiongate, as/about. It answers the contract, its version, the events, the exports, the example's files, andserver: the bridge's name for this start, whether that server is still starting, and txAdmin's events now and from the next start.serverisnullfor an account that does not hold View the dashboard, from which the status bar already keeps the server's state.The Documentation page (
fbc0a72)/docs, Documentation at the rail's foot above Settings, for every account.observer:startChanges(File changes), bans (the Bans page, and the refusal message in the settings), txAdmin's events (this server's setting). A page the account does not open is named, not linked.rescheduledfindsobserver:restartRescheduled), the exports, and txAdmin's events by their own names, and opens the page on them. The page's search button opens it too.The page's tests on the coming contracts (
2f41f6b)player-kick-messages(5),allowlist-maintenance(6) andshutdown-hold(7, Let server resources hold a stop until they have saved, in contract 7 #55), three of the page's tests held to contract 4: the order of its events, the fields ofobserver:shuttingDown, and an export's name found once in its card. They now hold to whatever contract the branch ships.Why
The people who write the server's resources work in the panel already; the contract was not there. Drawing the very text the binary ships keeps the page from drifting from the file, and the tests that held
CONTRACT.mdto the bridge now hold every event and export the bridge has.Notes for review
web/src/i18n/en.ts: it is content the binary serves, in English, as the licences of the About page and the release notes are. The panel's own words around it are in the catalog.web/src/docs/Anchor.tsx), not the router'sLink: every one leads to the open page, andLinkmarks such a link as the current page.NOTEDinweb/src/docs/Notes.tsx). Renaming Player labels, Bans, txAdmin's events orobserver:startChangesmakesDocsPage.test.tsxfail untilNOTEDfollows.resource/as Vite raw imports:server.fs.allowinweb/vite.config.tsopens../resourceto the dev server, and nothing else of the repository.web/src/shell/nav.tsand in the search's test (05027c5). Of the branches still open, this one adds a conflict inREADME.mdto Let server resources hold a stop until they have saved, in contract 7 #55 andentities, and none to Kick a player or everyone, and raise announcements and direct messages for the server's resources, in contract 5 #58,allowlist-maintenanceorban-templates-edits, beyond whatmainalready gives them.Verified
mainafter Follow the server's resources on a Resources page, and start, stop, restart or rescan them #57 (05027c5), on Windows:cargo xtask check, that is fmt, icons, clippy with-D warningswith and withouttest-catalog, 3,303 Rust tests passed and none failed, bindings unchanged, and inweb/format, lint, type check, 823 tests and the build, under Node 26.13. The same passed on the first merge (c9f0bc0, after Run the fake FXServer tests on ports the system gives, so that two runs on one host no longer collide #56).2fbe443and0b03fdf; fmt, clippy with-D warningsand the tests ofobserver-fxserverforaeb54b0; the same forobserver-fxserverandfake-fxserver, with the new supervisor test, forbbfee6e;cargo xtask bindingsleavingweb/src/api/generatedunchanged, then the type check, for3c01883.player-kick-messages,allowlist-maintenanceandshutdown-hold, their four files ofresource/put in this checkout for the run: the tests ofcontract.rspass on all three, and the page's tests, the search's included, since2f41f6b.fbc0a72, against a debug Observer with the fake FXServer and four players, two of them labelled: the contents, the links within the text, an address with a section opened afresh, Back, a handler and a section's address copied, the search from the page and from the settings, and the server stopped and started with txAdmin's events switched in between (the card follows without a reload, and the next start draws another name). At 1440, 1024, 375 and 320 px, dark and light, with no console error and nothing scrolling sideways. Also as an account that holds no permission: the contract alone, without This server.Not verified
cargo xtask e2e: no browser flow is added for the page.