Kids mode: ask who the computer is for and install the child profile - #146
Kids mode: ask who the computer is for and install the child profile#146peterholko wants to merge 6 commits into
Conversation
The configurator asks "Who is this computer for? Me / Child / Another owner" before the keyboard. Child takes a kid password and a parent password through the shared setup form, masks both in the summary, and hands the orchestrator the parent hash as root_enc_password with sudo: false plus a parent_encryption_password for a second LUKS slot; the context records the profile, omarchy-apply-system gets --profile child, install/omarchy-child.packages joins the runtime package list, and an add_parent_disk_key phase adds the parent's key. The builder vendors the child package list, tolerating one that holds only comments, and omarchy-iso-test --child drives a child install with GUEST_PARENT_PASSWORD. "Me" and "Another owner" keep today's flow. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Reviewed by Claude Opus 5 and, independently, by Codex at xhigh reasoning. Noting it is a draft — this is early feedback, not a request to change anything before you are ready. Credential handling is genuinely carefulWorth saying first, because it is the part that would have been easy to get wrong and is not. Neither password is ever a command-line argument; hashing and LUKS formatting go over stdin, and The one that would bite hardest
The file already has exactly the right pattern one check above — the existence test prints an actionable error and exits 1. Extending it to grep the vendored form for Two credential invariants nothing here enforcesBoth are reachable through autoinstall rather than the interactive form, so they are hardening rather than live bugs — but
Smaller
On what the profile restrictsI read omarchy#9750 to check whether the restriction is real rather than cosmetic, and on the administrative axis it is real: Two things to be plain about rather than to change: it restricts administration, not access — the kid keeps a full shell and terminal, and this repo's own harness asserts Super+Return opens a Tests
NextWaiting on you, and on the merge order: omarchy#9750 needs to land and reach a published runtime before this, or the ISO built from it cannot install. Nothing was pushed to your branch — the main finding is a cross-repo guard, two more are pre-existing patterns better fixed repo-wide, and whether kids mode belongs in the installer is the maintainer's call rather than mine. |
The configurator printed "Let's set the parent password..." as a screen header and then asked for the name, email, hostname, and timezone under it. A fresh header follows the parent password now. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Child installs close the text consoles, so the harness's console login for the SSH bootstrap, and the tty3 check after the disk unlock, never came back on a --child run. A child run now does what a parent would: it types the parent password at the disk and at SDDM, opens the terminal with Super+Return, runs the bootstrap there, and checks that SSH comes up as the kid account, which is the proof that the parent password opens the kid's session; later boots log in the same way. The kid's own password is still typed at the installer and refused by sudo in the in-guest suite. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Both answers only feed git identity and the compose shortcuts, and on a child install it is a parent at the keyboard, so whatever they typed would have landed in the kid's git config as the parent's identity. The child user step now goes from the parent password to the hostname, the summary drops the two rows, and the harness's child run types neither. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The child branch returned 0 whenever OCR did not read "passphrase", and ocr_screen returns nothing at all when the screendump is empty or the magick conversion fails -- so a failed read was indistinguishable from an opened disk and --child --encrypt reported green 30 seconds in, without the disk having opened. Its `continue` also skipped the waited >= 300 check, so a passphrase that never unlocks typed forever instead of failing. Both proved against the extracted function with stubbed helpers: blank OCR returned 0, and a screen still showing the prompt did not terminate. Requiring OCR to have said something keeps the author's signal while closing the blank-read case, and folding the console branch into an else lets the existing timeout cover both. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
QMP rejects "escape": against a live socket, esc returns {"return": {}} and
escape returns "Parameter 'data' does not accept value 'escape'". qmp() ends in
`|| true` with stderr discarded, so the retry never cleared the screen and
failed silently.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Re-reviewed at Line numbers below are at Two defects in the new
|
Kids mode: ask who the computer is for and install the child profile
The installer half of omacom/omarchy's
kids/child-profilebranch. That side adds the child profile,omarchy-parent, and the parent password; this side gets the answers and hands them over.What changes
omarchy_prompt_computer_for.root_enc_passwordwithsudo: false, plusparent_encryption_password; the context recordsprofile,omarchy-apply-systemgets--profile child, the child package list frominstall/omarchy-child.packagesjoins the runtime package list, and anadd_parent_disk_keyphase adds the parent's LUKS slot.build-iso.shvendors the child package list and tolerates it being comment-only (it is, for now).omarchy-iso-test --childdrives a child install withGUEST_PARENT_PASSWORDalongside the kid password;test/unit/test_child_profile.pycovers the orchestrator wiring."Me" and "Another owner" keep today's flow exactly.
What the installer shows on a child install
Every screen keeps the logo at the top; Esc goes back one screen, Ctrl+C aborts. "Me" is today's flow, and "Another owner" asks only the disk questions and runs the same form at first boot.
At first boot, the deferred ("Another owner") form shows the same two password screens when the operator chose Child, with one extra line on the parent screen while the disk is re-keyed: "It also unlocks the disk, so a parent can always get in."
Testing
test/unit/test_child_profile.pypasses.omarchy-iso-make --local-sourceagainst the omarchy branch and installed on a ThinkPad: the first question shows, both passwords are taken, both unlock the disk, the kid password logs in andsudoasks for the parent password.omarchy-iso-test --childstill to be run on a Linux host with KVM.Depends on omacom/omarchy
kids/child-profile(the--profileflag onomarchy-apply-systemand the child package list); merge that side first.🤖 Generated with Claude Code