Repository navigation
Short README with recordings, plus the first-run fixes they exposed (3.5.0-DOC14, B132-B137) - #6
Merged
Merged
Conversation
…t (3.5.0-B132) ?1049l restores the saved cursor even when no alternate screen was entered (xterm, xterm.js), and the progress bar leaves a stale DECSC behind, so the prompt was drawn over the run's output. Save the current position first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rsor (3.5.0-B133) The establish sequence saved the cursor, scrolled with ESC D on the bottom row and restored it. xterm.js restores a DECSC relative to the content, so the cursor came back a line high and the first output line overwrote the command. Index at the content cursor first, then save/set region/restore. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ption The rubric says ui() is not progress narration, yet plain-mode [PROGRESS] lines go through ui() on purpose so piped runs are not silent. Say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(3.5.0-DOC14, DEV19) The first screen now shows a terminal recording (resolve flags, update drift) and a one-line install; the makepkg/pacman relationship moves to its own section. A new section lists what the package installs, what it writes as the user, what it runs with sudo, and how to undo it. make demo-gif re-records the GIF from docs/assets/demo.tape against a scratch copy of the live config/state (tools/record-demo.sh). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (3.5.0-DEV20) GitHub's own renderer (gh api markdown, GFM), GitHub's stylesheet at the repo page width, and a <base> at the file's directory so images and relative links load from the working tree. FILE= previews any other Markdown file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…5.0-DOC14) The README was about 500 lines. Each section is now a short paragraph and a link; the body moved largely unchanged into docs/guides/ (getting-started, commands, sandbox, what-sysforge-touches, fresh-install, from-a-checkout, verifying-releases). Links to the old README sections now point at the guides, and the stage-numbering tests read the fresh-install guide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ies (3.5.0-B134) usermod -aG only reaches a session at its next login, so the chgrp/chmod repair left the state dir closed to the first session after install: builds went unrecorded and update crashed. When the process does not hold the group yet, grant the build user an inherited ACL on the tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The record site used warn(), hidden at the default verbosity, so a build that could not be recorded looked fine while update would never maintain it. BuildState.save now raises a RuntimeError naming the file, which update's verb runner reports as one clean line instead of a traceback. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gure (3.5.0-B136) reconfigure is stateless, so run_stage_standalone never recorded it and the notice, which waited for its status to read done, could never clear. A stateless stage now records first_done_at only (note_completed), leaving its status unset so run pipeline --resume still runs it; the notice asks stage_ever_done. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….5.0-B137) build_lock created the lock 0644, so once root created it no user run could open it read-write and concurrent-run detection was silently off. Create it 0664 (fchmod past the umask) and fall back to flock on a read-only fd. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sentinel Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….0-DEV19, DOC14) Three tapes: the README Quick start (an AUR package reviewed, built and maintained), a repo package rebuilt from source (getting-started guide) and a profile change with its flag drift and rebuild (drift guide). Each runs in its own container from an image where sysforge is built from the branch HEAD and the one-time setup has run (tools/demo/). make dev-deps gains a docs tier (vhs, Fira Code). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ystem Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
A shorter README with real recordings, the first-run bugs those recordings exposed, and two terminal-rendering fixes.
Docs
3.5.0-DOC14: the README goes from about 500 lines to 86. It opens with a recording and the four Quick start commands, then gives each section one paragraph and a link. The detail moved into new guides underdocs/guides/: getting-started, commands, sandbox, what-sysforge-touches, fresh-install, from-a-checkout and verifying-releases.3.5.0-DEV19:make demo-gifrecords three vhs tapes in a fresh Arch container (tools/demo/), with sysforge built from the branch HEAD: the Quick start (README), a repo package build (getting-started guide) and flag drift after a profile change (drift guide).make dev-depsgains adocstier (vhs, Fira Code).3.5.0-DEV20:make readme-preview [FILE=]renders Markdown through GitHub's renderer and opens it.12-logging.md: plain-mode[PROGRESS]lines are the one deliberate use ofui()for narration.Fixes found by following the Quick start in that container
3.5.0-B134: until thesysforgegroup applies at your next login, the first session after install could not write the state dir. It now gets a per-user ACL.3.5.0-B135: a build sysforge could not record was a warning hidden behind-v, andupdatecrashed with a traceback. Both are now clean errors.3.5.0-B136: the "Initial setup is incomplete" notice never cleared, because a standalonerun reconfigurewas never recorded as having run.3.5.0-B137: the stage lock was created0644by root, which silently disabled the check against overlapping runs for user runs.Terminal rendering
3.5.0-B132: the shell prompt landed on top ofupdate's output:?1049lrestored a stale saved cursor.3.5.0-B133: in xterm.js terminals (VS Code), the first line of output overwrote the command line, because the bar scrolled while a cursor was saved.Also included:
3.5.0-B130(cargo progress line in the sandbox) and3.5.0-B131(cpu_quota/mem_limitfor sandboxed builds). Both were committed on localmainbut not pushed, and this branch is based on them.Filed, not fixed:
3.5.0-B138(a failure before install leaves a stale sentinel) and3.5.0-DEV21(an end-to-end test tier that runs the documented paths on a fresh system).Each fix has a test that failed before it. The B134 to B137 fixes were also verified end to end in a fresh container. Commit
51d542b0(B134) also carries two asset moves that belong to the demo commit; the squash merge removes the split.Checklist
docs/release-notes/unreleased.md, led by its roadmap IDmake surfacecommitted, and its diff matches what I meant to change (no surface change;make check-surfacepasses)tools/retired_names.toml(none removed)docs/guides/) still describes it correctlymake pre-release(ormake ci-local) passes locally. Not run as a whole: the full suite (7,518 passed), lint and everycheck-*gate passed individually.🤖 Generated with Claude Code