Skip to content

Rewrite the README and fix inaccurate generated docs and workbench hints - #45

Merged
woksin merged 5 commits into
mainfrom
chore/readme-rewrite-and-cli-fixes
Jul 28, 2026
Merged

Rewrite the README and fix inaccurate generated docs and workbench hints#45
woksin merged 5 commits into
mainfrom
chore/readme-rewrite-and-cli-fixes

Conversation

@woksin

@woksin woksin commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

README rewrite, plus fixes to generated docs and workbench hints that referenced commands and keys that do not exist.

Added

  • CRATIS_NO_UPDATE_CHECK disables the update check.
  • README GIFs, with the tapes and fixture that re-render them.

Changed

  • Generated CHRONICLE.md points connection troubleshooting at cratis chronicle diagnose.
  • Workbench Overview names the sidebar entry to reach failures and recommendations.

Fixed

  • Chronicle commands in the generated CHRONICLE.md were missing their chronicle group and failed with "Unknown command".
  • cratis config show and cratis events has were referenced in generated docs but do not exist.
  • Workbench opened with an empty content pane until the first keypress.
  • Workbench AI description advertised number keys 1-9, which are not bound.
  • README's Linux install command returned 404; release assets carry the version in the filename.

woksin and others added 5 commits July 28, 2026 10:31
Nearly every command the generator emitted omitted the `chronicle` group —
`cratis observers list` rather than `cratis chronicle observers list` — so an
agent following the document got "Unknown command". Two commands did not exist
at all: `cratis config show` (there is no config group) and `cratis events has`.

CHRONICLE.md is written into a project by `cratis init` and read by AI tools as
ground truth, which makes a wrong command worse than no guidance.

Also replaces an unsourced "up to 34x fewer tokens" claim about plain output
with the measured 4-5x, and points connection troubleshooting at
`cratis chronicle diagnose`.

The accompanying spec scans the generated text for any Chronicle sub-branch
appearing without its group, so the class of mistake cannot come back.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
NavigateTo is what selects a nav item and renders its view, and it was guarded
behind a restored index greater than zero. A first-ever session — or any session
last closed on Overview — therefore opened to an empty pane and stayed that way
until the first keypress.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Overview panel told users to "press 3" and "press 5" to reach failures and
recommendations, and the command's LlmDescription told agents to navigate with
number keys 1-9. No number key is bound in WorkbenchKeyDispatcher.

The hints now name the sidebar entries, and the description lists the keys that
do exist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was no way to stop the CLI reaching NuGet and closing commands with
"update available". That notice is noise in a cron log, in CI, and in a
recorded terminal session, and the only workaround was pre-dating the cache
the check consults — a hack aimed at the wrong layer.

Set the variable to any non-empty value and the check returns without a
request. Agent environments already suppressed the hint; this covers everyone
else.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The README opened with an installation list and left the reader to work out
what the tool is for. It now opens with the situation that sends someone to it:
a read model that looks wrong, where the derived state and the reason for it
live in two different places and a stalled observer is indistinguishable from
an idle one.

Also fixes the Linux install command, which fetched
`latest/download/cratis-linux-x64.tar.gz`. Release assets carry the version in
the filename, so that URL has been returning 404.

Every command, figure and block of output in the new text was produced by
running the CLI, including the output-format byte counts.

Adds three recorded GIFs and the harness that produces them. assets/demo-store
builds a throwaway Chronicle in Docker and seeds a bookshop with one reactor
partition deliberately failing, so the recordings have something real to show
without pointing a camera at anyone's system. Identifiers are deterministic and
the tapes are committed, so the set re-renders from a clean checkout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@woksin

woksin commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator Author

Reviewer notes — not release notes.

Verification. dotnet build -c Release clean (5 projects, 0 warnings). dotnet test -c Release green: 237 unit specs, 161 integration. Every command in the new README (35) and in the regenerated CHRONICLE.md (15) was run through --help to confirm it resolves. The install command was executed end to end — downloads, extracts, ./cratis --version prints 2.2.0. Output-format byte counts in the README are measured, not estimated.

The CHRONICLE.md spec. and_referencing_chronicle_commands scans the generated text for any Chronicle sub-branch name appearing without its group. I confirmed it fails against the pre-fix generator before keeping it.

Recording harness. assets/demo-store is deliberately outside the solution and carries its own Directory.Build.props so MSBuild does not pull in the repo's analyzers or central package versions. It is not part of Cli.slnx and does not build in CI. assets/.gitignore excludes the generated recording home, which holds a cached dev token.

Known, not addressed here:

  • The workbench prints the composed connection string including the client secret in its Overview panel, while diagnose and the error paths redact it. Two-line fix using the existing regex; left out to keep this PR scoped.
  • Seen once and not reproduced: the workbench crashed with At least one object must implement IComparable while live data changed under a sorted table. No repro after ~12 subsequent launches. FilterableTableView.GetColumnComparer is where I would start.
  • vhs cannot deliver arrow keys to applications on the machine these were recorded on — bash's own history does not respond either. The workbench key table in the README documents arrows because they work for real users; they are not demonstrable in a recording. Details in assets/RECORDING.md.

@woksin woksin added the minor New features, non-breaking additions label Jul 28, 2026
@woksin
woksin merged commit 98c5307 into main Jul 28, 2026
1 check passed
@woksin
woksin deleted the chore/readme-rewrite-and-cli-fixes branch July 28, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor New features, non-breaking additions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant