Login
Check-in [ba21098522]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:The preview runs an app's release offered as next

Intent: the maintainer asked that a staged app be seen before it is accepted: "Accept should not be required before preview" and "once it is staged, a preview should be available" (ocx-console posts 9d5d8673f4 and 498cf64f4d, relayed by the One Place session). ext/ocx2-cgi-next/app/APP ran the app's current release, so a staged console could not be previewed.

Expression: Apps.serve takes the preview explicitly, under precept C6 (Explicit Arguments), from the context the program's name sets, and Apps.program picks the app root's staged/next for the preview and current otherwise, as Projects.program does for OCX's own program. With nothing offered, the preview's 404 says no release is offered as next. The tools doc and the modules list say so.

Demonstrates: spec/ocx/apps_spec.cr: before accept, the page answers that nothing is accepted while the preview runs the staged build with Fossil's request; the preview's 404 names next. crystal run ci.cr: 713 examples, coverage 100.0%, its one error the known rcvfrom lock (ticket 00817df826), whose spec passes rerun.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KKBs1b4wzoSCq6zh7U

Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | connector-oauth
Files: files | file ages | folders
SHA3-256: ba2109852228a0912698dc465f19413d77ae7cab027ba59036f01757273613fc
User & Date: x86-1-session 2026-11-08 05:50:12.818
Context
2026-11-08
08:33
unversioned_list lists what the server holds, fetching no file

Intent: listing a clone's unversioned files ran fossil uv sync first, so every clone that listed them pulled every file, each ~100 MB BQ2 seed among them (ollama forum post 5bdae9f13d, the maintainer's ask relayed by the One Place session, from ocx-console a85cc28929).

Expression: ListUnversioned reads the clone's remote and lists it without a sync: over https or http, Fossil's /juvlist page, unsigned, any user or password in the remote left out, as the receipt tool is asked, read within Exchange's time and at most LISTED bytes; a file remote by reading that repository; a clone with no remote, its own files. A remote over neither, a server not reached, or a page that is not the list is refused, saying why. unversioned_get and unversioned_put still sync, as they did. docs/remote-agents.md says the list fetches no file.

Demonstrates: spec/ocx/checkout_tools_spec.cr: a file added on a served repository is listed by name and size while the clone holds no unversioned file; an ssh remote and a dead server are each refused, naming why; the file-remote edit test lists as before. spec/ocx/dry_run_spec.cr: the list's dry run runs to its end with no remote. crystal run ci.cr: 713 examples, coverage 100.0%, its one error the known rcvfrom lock (ticket 00817df826), whose spec passes rerun.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KKBs1b4wzoSCq6zh7U check-in: 1724d0f5e2 user: x86-1-session tags: connector-oauth

05:50
The preview runs an app's release offered as next

Intent: the maintainer asked that a staged app be seen before it is accepted: "Accept should not be required before preview" and "once it is staged, a preview should be available" (ocx-console posts 9d5d8673f4 and 498cf64f4d, relayed by the One Place session). ext/ocx2-cgi-next/app/APP ran the app's current release, so a staged console could not be previewed.

Expression: Apps.serve takes the preview explicitly, under precept C6 (Explicit Arguments), from the context the program's name sets, and Apps.program picks the app root's staged/next for the preview and current otherwise, as Projects.program does for OCX's own program. With nothing offered, the preview's 404 says no release is offered as next. The tools doc and the modules list say so.

Demonstrates: spec/ocx/apps_spec.cr: before accept, the page answers that nothing is accepted while the preview runs the staged build with Fossil's request; the preview's 404 names next. crystal run ci.cr: 713 examples, coverage 100.0%, its one error the known rcvfrom lock (ticket 00817df826), whose spec passes rerun.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KKBs1b4wzoSCq6zh7U check-in: ba21098522 user: x86-1-session tags: connector-oauth

2026-11-06
05:05
The connector's sign-in link brings a signed-out viewer back to the authorize request

Intent: the maintainer's first try at adding the connector in Claude (8:51 PM Nov 5, record.jsonl on ollama; screenshot ocx-console 4b8cbe87ce) opened authorize in Claude's in-app browser, signed out of Fossil. The page's sign-in link sent them to Fossil's login, which after sign-in showed "Not Found: Page not found: https:". Fossil 2.27's login sends the browser back to the repository's URL, a slash and g (`%R/%s`, its src/login.c), and the page gave g as an absolute https:// URL.

Expression: the consent page gives g as the path below the repository, ext/ocx2-cgi/oauth/authorize?FIELDS, which Fossil's rule turns back into the same authorize request.

Demonstrates: spec/ocx/connector_spec.cr: signed out, authorize's sign-in link carries g such that SITE, a slash and g is the authorize request it answered. End to end against a local `fossil server --nojail --repolist --extroot --notfound --files` started as hosts.json starts the public one: signed out, authorize asks to sign in; its link opens Fossil's login, which keeps g; the login POST is sent back to exactly the authorize request, which offers approve; approve 302 to https://claude.ai/api/mcp/auth_callback with the state; token 200; initialize 200; notifications/initialized 202; tools/list, five tools; ocx_status as voice. The guards pass, with the known database-is-locked flake (ticket 00817df826) and the fixture teardown race rerun green on their own; coverage 100.0%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KKBs1b4wzoSCq6zh7U check-in: 73894cf022 user: x86-1-session tags: connector-oauth

Changes
Unified Diff Side-by-Side Diff Patch
Changes to docs/design/modules.json.
Changes to docs/design/modules.md.
Changes to docs/protocol-v2-tools.md.
Changes to spec/ocx/apps_spec.cr.
Changes to src/ocx/apps.cr.
Changes to src/ocx/cgi.cr.