v0.9.147
Patch Changes
-
#897
db1eb2bThe state directory and the plugin tree are repaired to owner-only on every
start, not just when they are created<home>/.rovewas created by a baremkdirand landed at 0755 under the
default umask, and the daemon socket inside it bound atsrwxr-xr-xbecause
listen()applies the umask too. Nothing else gates that socket — connections
are accepted with no peer-credential check — so on a shared machine the
directory mode was the entire ACL, and reaching the socket meansadd(launch
an engine) andsend(text into a live session). Both the daemon and the PTY
host now create that directory 0700 and chmod it again on every boot, and both
sockets are chmod'd 0600 after the bind.The "again on every boot" half is the one that matters.
mkdirSyncand
writeFileSyncapply theirmodeonly when they create the path, so a home
that predates the mode arguments kept 0755 forever — the population a
creation-time fix cannot reach is exactly the exposed one.The same defect had the plugin tree world-readable.
docs/PLUGIN-AUTHORING.mdtells authors to keep API keys in the config.env
and states that the.env, the state directory andlog.jsonlare owner-only;
that was true for a fresh install and false for every older one, because
writePluginSettingsrewrites the.envin place and an in-place write never
changes a mode. Every registered plugin's config, state,.env,log.jsonl
and the registry are now repaired at daemon start and after each settings save,
so the documented sentence holds on installs that already exist.Two comments in the web-token chain described mechanisms that are gone.
pty-auth.mjscredited the daemon with minting the token file it fails closed
without — no daemon path does;kobe-harness/dev.tsis the only minter, which
matters to anyone adding a launcher. The harness token header was written
around a<meta name="rove-web-token">injector that #855 deleted along with
the daemon-hosted web transport, and presented the only channel that still
works,VITE_ROVE_WEB_TOKEN, as a narrow fallback. Both now say what the code
does. — @Sma1lboy -
#898
ca20e8fFix the twocommit-treecalls in the daemon test fixtures that never passed a git identity, which failed every release run on CI where no globaluser.nameexists. — @Sma1lboy