feat(sync): headless --sync-cli mode so sync only needs the app installed

The Electron app now answers launcher-style sync argv (--sync-cli sync
[host|--snapshot|--merge] ... plus --help/--version) at entry, before any
window or display initialization, backed by a libsql binding of the shared
stats-sync engine. Works over SSH with no display server, so a remote
machine no longer needs the bun launcher. The launcher accepts --sync-cli
as a no-op so both invocation shapes stay equivalent.
This commit is contained in:
2026-07-11 20:23:22 -07:00
parent 04095eebf7
commit ffa183b1a1
16 changed files with 1003 additions and 1 deletions
+5 -1
View File
@@ -79,7 +79,11 @@ function applyRootOptions(program: Command): void {
.option('-R, --rofi', 'Use rofi picker')
.option('-H, --history', 'Browse local watch history')
.option('-S, --start-overlay', 'Auto-start overlay')
.option('-T, --no-texthooker', 'Disable texthooker-ui server');
.option('-T, --no-texthooker', 'Disable texthooker-ui server')
// The SubMiner app answers sync commands when invoked with --sync-cli.
// Remote-command resolution may address the launcher the same way, so
// accept the flag as a no-op to keep both invocation shapes equivalent.
.option('--sync-cli', 'Compatibility no-op (sync commands work with or without it)');
}
function buildSubcommandHelpText(program: Command): string {