feat(services): add service_whiteboard.nu #83
No reviewers
Labels
No labels
prio_critical
prio_low
type_bug
type_contact
type_issue
type_lead
type_question
type_story
type_task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lhumina_code/hero_skills!83
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "development_service_whiteboard"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
tools/modules/services/service_whiteboard.nu, a lifecycle module for thehero_whiteboardservice (server + UI) withinstall | start | stop | statussubcommands. Near-identical copy ofservice_os.nu, confirming the minimal two-binary / virtual-workspace / no-preflight template is reusable.Related
Changes
tools/modules/services/service_whiteboard.nu— new module (~270 lines). Registershero_whiteboard_serverandhero_whiteboard_uias hero_proc actions plus thehero_whiteboardservice. Surfaces both Unix sockets and thehttp+unix://…/ui.sock/URL in the start summary.tools/modules/services/mod.nu— addexport use service_whiteboard.nu.--rootis optional on every command; user-level is the default.Why this is the simplest cycle so far
Zero books-specific adaptations. Zero os-specific adaptations. Just:
--workspacepass like books).servesubcommand (confirmed viamain.rs—maincallsserve()directly). Books remains the only outlier.HERO_*_DATA/ socket-url placeholders to resolve.depends_on, no external asset dir).The only substantive diff vs.
service_os.nuis removal ofsvx_check_assets(and its call instart).Test Results
End-to-end smoke test on the Hetzner box. Every
service_whiteboardassertion passed.service_proc start --roothealthyservice_whiteboard install --rootproduced 3 binariesservice_whiteboard start --reset --rootregisters + startsrpc.sockandui.socklive unix socketsstatusreturns{name: hero_whiteboard, state: running, restarts: 0}start(no--reset) prints "already running"stopcleanly unregistersstatusreturns expectedservice 'hero_whiteboard' not foundFull per-step output on issue #82.
Non-blocking observation
Socket files (
rpc.sock,ui.sock) remained on disk as stale zero-byte inodes afterstop— hero_whiteboard's binaries don't unlink their Unix-socket path on SIGTERM (unlikehero_os_server/hero_books_server, which do). Harmless: hero_proc unregistered cleanly (confirmed by the post-stopstatuserror), andkill_other.socketin the action specs unlinks the stale files on the nextstart. Worth a separate follow-up issue againstlhumina_code/hero_whiteboardto add a SIGTERM handler; out of scope here.