config check: validates UUID format, recognized methods, keyfile
consistency and existence. Reports all issues with alias context.
remove: deletes a device from config by alias. Inverse of add.
status: --mounted, --unlocked, --locked flags filter the device table.
Flags combine as OR.
mount/unlock: display which method succeeded and key slot used, e.g.
"(fido2, key slot 1)". cryptsetup Open now runs with -v and parses
"Key slot N unlocked" from stderr via io.MultiWriter.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Privileged unmount now does a best-effort rmdir on the mount point after
umount succeeds. Only removes empty directories; non-empty dirs and
errors are silently ignored.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New 'arca add <device>' subcommand detects a LUKS device via udisks2 and
appends it to the config with passphrase as default method. Supports
--alias/-a to override the generated name. Skips if UUID already
configured. Adds Config.Save() and Config.HasUUID() to config package.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add -v/--verbose persistent flag that prints debug info to stderr:
D-Bus connection status, token plugin directory discovery, unlock method
sequencing with per-method success/failure, and full cryptsetup command
lines including LD_LIBRARY_PATH.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
udisks2 connection and device listing errors now suggest checking the
service. Device-not-found errors suggest 'arca status' or 'arca init'.
Failed cryptsetup token unlock hints at missing FIDO2/TPM2 key.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mount now detects already-unlocked and already-mounted devices, returning
the existing mount point instead of failing. unmount handles already-locked
devices gracefully and skips unmount if not mounted before locking.
Adds IsMounted helper to udisks client. Updates PLAN.md with refined
v1.0.0 milestones.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Go CLI using cobra with mount, unmount, status, and init subcommands.
Unlocks via udisks2 D-Bus (passphrase/keyfile) or cryptsetup (FIDO2/TPM2)
with ordered method fallback. Includes NixOS-specific LD_LIBRARY_PATH
injection for systemd cryptsetup token plugins.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>