|
31391
|
1230
|
19
|
2026-05-13T08:38:09.452223+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661489452_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 7, Col 1 (100 selected)","depth":16,"bounds":{"left":0.83144945,"top":0.9848364,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.7865692,"top":0.9848364,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.7659575,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7659575,"top":0.054269753,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76828456,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8646942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.87200797,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.06815159,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03125,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.15990691,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16156915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16888298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.19281915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18384309,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.064494684,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8188165,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98670214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"bounds":{"left":0.9886968,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.1100399,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9381649,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.9601064,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.96575797,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7859042,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9361702,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.9584442,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9637633,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78390956,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7859042,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.16921543,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.79853725,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.024268618,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8537234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.025930852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"bounds":{"left":0.83543885,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.82081115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.84275264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":23,"bounds":{"left":0.8500665,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.051529255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── SUMMARY ──────────────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.14694148,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've successfully added audio data syncing and log copying to the script. Here's what was added:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.17386968,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio Data Syncing:","depth":22,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.037898935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"bounds":{"left":0.7849069,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":22,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":23,"bounds":{"left":0.8178192,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table creation","depth":22,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.025598405,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added indexes for audio tables (timestamp, audio_chunk_id)","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.10837766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions_fts","depth":23,"bounds":{"left":0.7849069,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"full-text search table","depth":22,"bounds":{"left":0.83011967,"top":0.07102953,"width":0.037898935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added INSERT statements for audio_chunks and audio_transcriptions","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.1243351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added FTS update for audio_transcriptions","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.07712766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added verification counts and checks for audio data","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Log Copying:","depth":22,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.024601065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added section to copy logs from","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.059507977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.83011967,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/screenpipe.YYYY-MM-DD.*.log","depth":24,"bounds":{"left":0.83577126,"top":0.07102953,"width":0.0887633,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to","depth":22,"bounds":{"left":0.92420214,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.92985374,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.22307181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Uses rsync to copy log files for the target date","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.08277926,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Shows file count and total size","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.054521278,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.19481383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lets think about how to split the script","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.06549202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"@","depth":27,"bounds":{"left":0.83211434,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.8351064,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"bounds":{"left":0.87333775,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12200798,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.20378989,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.027593086,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.12932181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.9075798,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"bounds":{"left":0.9132314,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9694149,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.10472074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07347074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.035904255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"bounds":{"left":0.8068484,"top":0.07102953,"width":0.05851064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8650266,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"bounds":{"left":0.8706782,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.21941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8587101,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-2372747331493944343
|
4562841228699749725
|
visual_change
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single...
|
31389
|
NULL
|
NULL
|
NULL
|
|
31392
|
1230
|
20
|
2026-05-13T08:38:12.484475+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661492484_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 7, Col 1 (100 selected)","depth":16,"bounds":{"left":0.83144945,"top":0.9848364,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.7865692,"top":0.9848364,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8646942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.87200797,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.06815159,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03125,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.15990691,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16156915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16888298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.19281915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18384309,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.064494684,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8188165,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98670214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"bounds":{"left":0.9886968,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.1100399,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9381649,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.9601064,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.96575797,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7859042,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9361702,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.9584442,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9637633,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78390956,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7859042,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.16921543,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.79853725,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.024268618,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8537234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.025930852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"bounds":{"left":0.83543885,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.82081115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.84275264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
2959476545438073523
|
4562841230817871836
|
visual_change
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31393
|
1229
|
26
|
2026-05-13T08:38:18.441523+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661498441_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 7, Col 1 (100 selected)","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":1.0,"top":0.0,"width":-0.07847226,"height":0.02},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"}]...
|
-4617450510954103228
|
4562841230813677404
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31394
|
1230
|
21
|
2026-05-13T08:38:18.465276+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661498465_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 7, Col 1 (100 selected)","depth":16,"bounds":{"left":0.83144945,"top":0.9848364,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.7865692,"top":0.9848364,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
6860532224838636595
|
3986362886324181884
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (100 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES...
|
31392
|
NULL
|
NULL
|
NULL
|
|
31395
|
1229
|
27
|
2026-05-13T08:38:19.302201+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661499302_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
6781208629539466581
|
-8353730564353922816
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
31393
|
NULL
|
NULL
|
NULL
|
|
31396
|
1230
|
22
|
2026-05-13T08:38:19.350775+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661499350_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"bounds":{"left":0.27027926,"top":0.4309657,"width":0.4793883,"height":0.56903434},"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
6781208629539466581
|
-8353730564353922816
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31397
|
1229
|
28
|
2026-05-13T08:38:20.675034+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661500675_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-1497734120449229536
|
-8934694916276328192
|
visual_change
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31398
|
1229
|
29
|
2026-05-13T08:38:34.984215+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661514984_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"}]...
|
3711799081217403420
|
-6056719256560368806
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
...
|
31397
|
NULL
|
NULL
|
NULL
|
|
31399
|
1230
|
23
|
2026-05-13T08:38:34.997936+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661514997_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"}]...
|
-7607639264154532462
|
-6092748053581429942
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31400
|
1229
|
30
|
2026-05-13T08:38:35.786496+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661515786_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-1085727815052050872
|
865138422629296384
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31401
|
1230
|
24
|
2026-05-13T08:38:35.786516+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661515786_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"bounds":{"left":0.27027926,"top":0.4309657,"width":0.4793883,"height":0.56903434},"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-1085727815052050872
|
865138422629296384
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31402
|
1229
|
31
|
2026-05-13T08:38:36.151887+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661516151_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-1085727815052050872
|
865138422629296384
|
visual_change
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31403
|
1229
|
32
|
2026-05-13T08:38:39.169364+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661519169_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-6547314836419746127
|
4439676904620719560
|
visual_change
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
31402
|
NULL
|
NULL
|
NULL
|
|
31404
|
1230
|
25
|
2026-05-13T08:38:45.928271+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661525928_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-6547314836419746127
|
4439676904620719560
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31406
|
1230
|
26
|
2026-05-13T08:39:10.246547+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661550246_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"}]...
|
6152737197016558688
|
-6633180007238232754
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak...
|
31404
|
NULL
|
NULL
|
NULL
|
|
31405
|
1229
|
33
|
2026-05-13T08:39:10.246613+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661550246_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_files.sh — screenpipe [SSH: nas] — screenpipe_sync_files.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (98 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 7, Col 1 (98 selected)","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":1.0,"top":0.0,"width":-0.08263886,"height":0.02},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"}]...
|
6940725323819825910
|
-634052157076174740
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (98 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31407
|
1229
|
34
|
2026-05-13T08:39:11.275502+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661551275_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (98 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 7, Col 1 (98 selected)","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":1.0,"top":0.0,"width":-0.08263886,"height":0.02},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── SUMMARY ──────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've successfully added audio data syncing and log copying to the script. Here's what was added:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio Data Syncing:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table creation","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added indexes for audio tables (timestamp, audio_chunk_id)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions_fts","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"full-text search table","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added INSERT statements for audio_chunks and audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added FTS update for audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added verification counts and checks for audio data","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Log Copying:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added section to copy logs from","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Uses rsync to copy log files for the target date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Shows file count and total size","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lets think about how to split the script","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"@","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"}]...
|
-1252644892048245424
|
4562841228670387197
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 7, Col 1 (98 selected)
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31408
|
1230
|
27
|
2026-05-13T08:39:11.295530+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661551295_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 9, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 9, Col 1","depth":16,"bounds":{"left":0.8557181,"top":0.9848364,"width":0.019946808,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.81050533,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8646942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.87200797,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.06815159,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03125,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.15990691,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16156915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16888298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.19281915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18384309,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.064494684,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8188165,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98670214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"bounds":{"left":0.9886968,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.1100399,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9381649,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.9601064,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.96575797,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-1341829373461897337
|
4562770862069498716
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 9, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31409
|
1229
|
35
|
2026-05-13T08:39:11.878933+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661551878_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 8, Col 45
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 8, Col 45","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── SUMMARY ──────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've successfully added audio data syncing and log copying to the script. Here's what was added:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio Data Syncing:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table creation","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added indexes for audio tables (timestamp, audio_chunk_id)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions_fts","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"full-text search table","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added INSERT statements for audio_chunks and audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added FTS update for audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added verification counts and checks for audio data","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Log Copying:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added section to copy logs from","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Uses rsync to copy log files for the target date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Shows file count and total size","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lets think about how to split the script","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"@","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"on_screen":true,"role_description":"text"}]...
|
7562390012737927196
|
4562841228666192765
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 8, Col 45
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:...
|
31407
|
NULL
|
NULL
|
NULL
|
|
31410
|
1230
|
28
|
2026-05-13T08:39:11.906826+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661551906_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 8, Col 45
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 8, Col 45","depth":16,"bounds":{"left":0.8537234,"top":0.9848364,"width":0.021941489,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.80851066,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8646942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.87200797,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.06815159,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03125,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.15990691,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16156915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16888298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.19281915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18384309,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.064494684,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8188165,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98670214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"bounds":{"left":0.9886968,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.13962767,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.1100399,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9381649,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.9601064,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.96575797,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7859042,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-1008965074449250705
|
4562840681057863516
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 8, Col 45
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"...
|
31408
|
NULL
|
NULL
|
NULL
|
|
31411
|
1229
|
36
|
2026-05-13T08:39:13.526685+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661553526_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 15, Col 46
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 15, Col 46","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── SUMMARY ──────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've successfully added audio data syncing and log copying to the script. Here's what was added:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio Data Syncing:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table creation","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added indexes for audio tables (timestamp, audio_chunk_id)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions_fts","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"full-text search table","depth":22,"on_screen":true,"role_description":"text"}]...
|
-1569135807257444796
|
4562840681057862141
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 15, Col 46
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31412
|
1230
|
29
|
2026-05-13T08:39:13.547562+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661553547_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 15, Col 46
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 15, Col 46","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8646942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.87200797,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.06815159,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03125,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.15990691,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16156915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16888298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.19281915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18384309,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.064494684,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-887519882217083595
|
3995387677764993884
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 15, Col 46
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31413
|
1229
|
37
|
2026-05-13T08:39:14.971591+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661554971_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 11, Col 1","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── SUMMARY ──────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've successfully added audio data syncing and log copying to the script. Here's what was added:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio Data Syncing:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table creation","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added indexes for audio tables (timestamp, audio_chunk_id)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions_fts","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"full-text search table","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added INSERT statements for audio_chunks and audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added FTS update for audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added verification counts and checks for audio data","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Log Copying:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added section to copy logs from","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Uses rsync to copy log files for the target date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Shows file count and total size","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"}]...
|
1626587617167220945
|
3986591584742786045
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted...
|
31411
|
NULL
|
NULL
|
NULL
|
|
31414
|
1230
|
30
|
2026-05-13T08:39:14.971603+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661554971_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 11, Col 1","depth":16,"bounds":{"left":0.8537234,"top":0.9848364,"width":0.021941489,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.80851066,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"bounds":{"left":0.8334442,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.85738033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8646942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.87200797,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.06815159,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8480718,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03125,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.15990691,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18916224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16156915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.16888298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.19281915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.18384309,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.064494684,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
7532136482045259923
|
3995387677767058300
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'...
|
31412
|
NULL
|
NULL
|
NULL
|
|
31415
|
1229
|
38
|
2026-05-13T08:39:19.119058+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661559119_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-4063927243590962030
|
4439536167132364232
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31416
|
1230
|
31
|
2026-05-13T08:39:19.155679+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661559155_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-4063927243590962030
|
4439536167132364232
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31417
|
1229
|
39
|
2026-05-13T08:39:21.507265+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661561507_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-4063927243590962030
|
4439536167132364232
|
visual_change
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31418
|
1229
|
40
|
2026-05-13T08:39:22.330089+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661562330_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 11, Col 1","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"}]...
|
-7117118643538463582
|
3914305292288351100
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;...
|
31417
|
NULL
|
NULL
|
NULL
|
|
31419
|
1230
|
32
|
2026-05-13T08:39:22.366161+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661562366_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 11, Col 1","depth":16,"bounds":{"left":0.8537234,"top":0.9848364,"width":0.021941489,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.80851066,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.18351063,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.16722074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.030585106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80019945,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98769945,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"bounds":{"left":0.9900266,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.796875,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8078458,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.11037234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.021941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"bounds":{"left":0.96210104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9674202,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7875665,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"bounds":{"left":0.78956115,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80585104,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.012965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.82613033,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.828125,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"bounds":{"left":0.82978725,"top":0.07102953,"width":0.16555852,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9950133,"top":0.07102953,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9830452,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.9850399,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"bounds":{"left":0.9896942,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"bounds":{"left":0.78224736,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"bounds":{"left":0.8244681,"top":0.07102953,"width":0.042220745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.86668885,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8902925,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"bounds":{"left":0.80418885,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80984044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"bounds":{"left":0.81150264,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"bounds":{"left":0.8171542,"top":0.07102953,"width":0.01462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.8317819,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-3246899402203848683
|
3986362886323133308
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31420
|
1229
|
41
|
2026-05-13T08:39:24.559138+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661564559_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 11, Col 1","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"18m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me first check the current script structure:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 3s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I'll add audio data syncing and log copying to the script. Let me make the necessary changes:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Error while editing","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$DB_SRC","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-20s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"] && [","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-eq","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"0\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"No frames or audio chunks found for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"— skipping DB sync\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DB_ALREADY_SYNCED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"true","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content='audio_transcriptions',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"content_rowid='id',","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenize='unicode61'","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":");","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"WHERE date(c.timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── FTS UPDATE ───────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"11","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AND t.transcription IS NOT NULL;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DETACH nas;","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── VERIFY DB ────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"';\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"V_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DB","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"');\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── SUMMARY ──────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've successfully added audio data syncing and log copying to the script. Here's what was added:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio Data Syncing:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table creation","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added indexes for audio tables (timestamp, audio_chunk_id)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions_fts","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"full-text search table","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added INSERT statements for audio_chunks and audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added FTS update for audio_transcriptions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added verification counts and checks for audio data","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Log Copying:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added section to copy logs from","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Uses rsync to copy log files for the target date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Shows file count and total size","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lets think about how to split the script","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"@","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"}]...
|
-2196804544398206065
|
3988842835069102941
|
visual_change
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 11, Col 1
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
18m
1m
Show More
Thought
for 1s
I'll add audio data syncing and log copying to the script. Let me first check the current script structure:
Read
screenpipe_sync.sh
Thought
for 3s
I'll add audio data syncing and log copying to the script. Let me make the necessary changes:
Error while editing
screenpipe_sync.sh
Thoughts
screenpipe_sync.sh
+
2
SRC_MEETINGS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '
$TARGET_DATE
';"
)
SRC_ACHUNKS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
SRC_ATRANS
=
$(
sqlite3
"
$DB_SRC
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thought
for 1s
screenpipe_sync.sh
+
5
-
3
printf
" %-20s %s\n"
"audio_transcriptions:"
"
$SRC_ATRANS
"
if
[
"
$SRC_FRAMES
"
-eq
"0"
] && [
"
$SRC_ACHUNKS
"
-eq
"0"
];
then
log
"No frames or audio chunks found for
$TARGET_DATE
— skipping DB sync"
DB_ALREADY_SYNCED
=
true
Thoughts
screenpipe_sync.sh
+
2
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
Thoughts
screenpipe_sync.sh
+
3
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
CREATE INDEX IF NOT EXISTS nas.idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_audio_trans_timestamp ON audio_transcriptions(timestamp);
DETACH nas;
Thought
for 1s
screenpipe_sync.sh
+
8
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
Thoughts
screenpipe_sync.sh
+
16
WHERE date(c.timestamp) = '
$TARGET_DATE
';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
11
AND t.transcription IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
2
V_MEETINGS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '
$TARGET_DATE
';"
)
V_ACHUNKS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
';"
)
V_ATRANS
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM audio_transcriptions WHERE audio_chunk_id IN (SELECT id FROM audio_chunks WHERE date(timestamp) = '
$TARGET_DATE
');"
)
Thoughts
screenpipe_sync.sh
+
2
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
19
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
Thought
for 1s
I've successfully added audio data syncing and log copying to the script. Here's what was added:
Audio Data Syncing:
Added
audio_chunks
and
audio_transcriptions
table creation
Added indexes for audio tables (timestamp, audio_chunk_id)
Added
audio_transcriptions_fts
full-text search table
Added INSERT statements for audio_chunks and audio_transcriptions
Added FTS update for audio_transcriptions
Added verification counts and checks for audio data
Log Copying:
Added section to copy logs from
~/.screenpipe/screenpipe.YYYY-MM-DD.*.log
to
$NAS_MOUNT/logs/screenpipe.YYYY-MM-DD.*.log
Uses rsync to copy log files for the target date
Shows file count and total size
The script now syncs both vision (frames, elements, ocr_text, ui_events, meetings) and audio (audio_chunks, audio_transcriptions) data, plus copies the daily logs to the NAS.
Feedback submitted
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31422
|
1230
|
33
|
2026-05-13T08:39:35.164737+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661575164_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.7659575,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7659575,"top":0.054269753,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76828456,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"19m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lets think about how to split the script","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.06549202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"@","depth":27,"bounds":{"left":0.83211434,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.8351064,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"bounds":{"left":0.87333775,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12200798,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.20378989,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.027593086,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.12932181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.9075798,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"bounds":{"left":0.9132314,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9694149,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.10472074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07347074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.035904255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"bounds":{"left":0.8068484,"top":0.07102953,"width":0.05851064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8650266,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"bounds":{"left":0.8706782,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.21941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8587101,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"bounds":{"left":0.8640292,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.22041224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.020944148,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"bounds":{"left":0.7918883,"top":0.07102953,"width":0.0930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.113696806,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.13198139,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.10704787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"bounds":{"left":0.8756649,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"bounds":{"left":0.88231385,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"bounds":{"left":0.8327792,"top":0.07102953,"width":0.05651596,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.045545213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.051861703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"bounds":{"left":0.8284575,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.038896278,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"bounds":{"left":0.81549203,"top":0.07102953,"width":0.119015954,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09375,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.22041224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"bounds":{"left":0.87333775,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"bounds":{"left":0.79388297,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.0013297872,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.07114362,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.004654255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.22539894,"height":0.0007980846},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.015625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"bounds":{"left":0.9640958,"top":0.07102953,"width":0.027925532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"bounds":{"left":0.96642286,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09208777,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.013630319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78457445,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"bounds":{"left":0.7898936,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"bounds":{"left":0.7965425,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"bounds":{"left":0.81449467,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"bounds":{"left":0.8287899,"top":0.07102953,"width":0.058843084,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.03856383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"bounds":{"left":0.8194814,"top":0.07102953,"width":0.09674202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"bounds":{"left":0.82513297,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.010638298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78125,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"bounds":{"left":0.82579786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"bounds":{"left":0.85538566,"top":0.07102953,"width":0.11502659,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"bounds":{"left":0.82413566,"top":0.07102953,"width":0.026928192,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07712766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.05119681,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.14793883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.048204787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"bounds":{"left":0.81914896,"top":0.07102953,"width":0.09042553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"bounds":{"left":0.8061835,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.08543883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12367021,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"bounds":{"left":0.8071808,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7649601,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76795214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.7815825,"top":0.07102953,"width":0.0009973404,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"bounds":{"left":0.7825798,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"bounds":{"left":0.76894945,"top":0.07102953,"width":0.010305851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.77892286,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-5395438770601949819
|
8592850480466168409
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31421
|
1229
|
42
|
2026-05-13T08:39:35.164766+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661575164_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"19m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lets think about how to split the script","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"@","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"}]...
|
-1543905530345225694
|
-1000072362081940901
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Lets think about how to split the script
@
screenpipe_sync.sh
it is big already. How can I split it to multiple smaller script for easier management. I will add more to it and it is already hard to follow
Expand content to scroll
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo...
|
31420
|
NULL
|
NULL
|
NULL
|
|
31423
|
1229
|
43
|
2026-05-13T08:39:36.008368+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661576008_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
ffmpeg
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ffmpeg","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
7566219225768724840
|
4439536167132356040
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
ffmpeg
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31424
|
1230
|
34
|
2026-05-13T08:39:36.008443+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661576008_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
ffmpeg
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ffmpeg","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
7566219225768724840
|
4439536167132356040
|
click
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
ffmpeg
Close Tab
⌥⌘1
-zsh...
|
31422
|
NULL
|
NULL
|
NULL
|
|
31425
|
1229
|
44
|
2026-05-13T08:39:36.606918+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661576606_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
ffmpeg
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ffmpeg","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
1258564883426039241
|
4439536167132364232
|
visual_change
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
ffmpeg
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31426
|
1230
|
35
|
2026-05-13T08:39:38.773282+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661578773_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh","depth":4,"on_screen":true,"value":"while kill -0 \"$pid\" 2>/dev/null; do\n printf \"\\r %-36s %s \" \"$label\" \"${spin[$i]}\"\n i=$(( (i + 1) % 10 ))\n sleep 0.2\n done\n wait \"$pid\"\n local rc=$?\n if [ $rc -ne 0 ]; then\n printf \"\\r %-36s ✗ FAILED\\n\" \"$label\" | tee -a \"$LOG_FILE\"\n exit $rc\n fi\n\n local dur=$(( $(date +%s) - start ))\n printf \"\\r %-36s ✓ %dm%02ds\\n\" \"$label\" \"$(( dur / 60 ))\" \"$(( dur % 60 ))\" | tee -a \"$LOG_FILE\"\n}\n\ncheck() {\n local label=\"$1\" got=\"$2\" expected=\"$3\"\n if [ \"$got\" -eq \"$expected\" ]; then\n printf \" %-20s %s / %s ✓\\n\" \"$label:\" \"$got\" \"$expected\"\n else\n printf \" %-20s %s / %s ✗ MISMATCH\\n\" \"$label:\" \"$got\" \"$expected\"\n fi\n}\n# ──────────────────────────────────────────────────────────────────────────────\n\n# If this script is executed directly (not sourced), run a test\nif [[ \"${BASH_SOURCE[0]}\" == \"${0}\" ]]; then\n echo \"screenpipe_sync_helpers.sh - Helper functions test\"\n echo \"This script should be sourced, not executed directly.\"\n echo \"\"\n echo \"Usage:\"\n echo \" source ./lib/screenpipe_sync_helpers.sh\"\n echo \"\"\n echo \"Available functions:\"\n echo \" log(msg)\"\n echo \" step(msg)\"\n echo \" run_sqlite_heredoc(label, sql)\"\n echo \" check(label, got, expected)\"\nfi\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts\nsource lib/screenpipe_sync_helpers.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11 \n+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11\n/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n run_sqlite_heredoc creating: No such file or directory\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-8121456522345911103
|
4439536167140752840
|
visual_change
|
accessibility
|
NULL
|
while kill -0 "$pid" 2>/dev/null; do
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# If this script is executed directly (not sourced), run a test
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "screenpipe_sync_helpers.sh - Helper functions test"
echo "This script should be sourced, not executed directly."
echo ""
echo "Usage:"
echo " source ./lib/screenpipe_sync_helpers.sh"
echo ""
echo "Available functions:"
echo " log(msg)"
echo " step(msg)"
echo " run_sqlite_heredoc(label, sql)"
echo " check(label, got, expected)"
fi
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ source screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd ~/.screenpipe/scripts
source lib/screenpipe_sync_helpers.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh: Bourne-Again shell script text executable, Unicode text, UTF-8 text
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ set -x
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
+-zsh:63> /Users/lukas/.screenpipe/scripts/screenpipe_sync.sh 2026-05-11
/Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_db.sh: line 13: /Users/lukas/.screenpipe/scripts/lib/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc creating: No such file or directory
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ file ~/.screenpipe/scripts/lib/screenpipe_sync_helpers.sh
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31427
|
1229
|
45
|
2026-05-13T08:39:54.758586+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661594758_m1.jpg...
|
iTerm2
|
nano
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cm +VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ New file ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ nano screenpipe_sync_db.sh
+-zsh:64> nano screenpipe_sync_db.sh
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib
+-zsh:65> cd lib
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ Read 297 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
UW PICO 5.09 File: screenpipe_sync_db.sh
#!/bin/bash
# screenpipe_sync_db.sh
# Database operations for screenpipe sync
# Source this file to use the functions, or execute standalone with env vars set
# Source helpers
LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$LIB_DIR/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
"
}
db_create_indexes() {
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
nano
Close Tab
screenpipe"
Close Tab
⌥⌘1
nano...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ New file ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ nano screenpipe_sync_db.sh \n+-zsh:64> nano screenpipe_sync_db.sh\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib \n+-zsh:65> cd lib\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 297 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n UW PICO 5.09 File: screenpipe_sync_db.sh \n\n#!/bin/bash\n# screenpipe_sync_db.sh\n# Database operations for screenpipe sync\n# Source this file to use the functions, or execute standalone with env vars set\n\n# Source helpers\nLIB_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\nsource \"$LIB_DIR/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n\u0000\u0000run_sqlite_heredoc \"creating tables\" \"\nATTACH '$NAS_DB' AS nas;\nCREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;\nDETACH nas;\n\"\n}\n\ndb_create_indexes() {\n\u0000\u0000run_sqlite_heredoc \"creating indexes\" \"\nATTACH '$NAS_DB' AS nas;\nCREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);\nCREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);\nCREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nCREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);\n\n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell","depth":4,"on_screen":true,"value":"+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ New file ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ nano screenpipe_sync_db.sh \n+-zsh:64> nano screenpipe_sync_db.sh\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib \n+-zsh:65> cd lib\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 297 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n UW PICO 5.09 File: screenpipe_sync_db.sh \n\n#!/bin/bash\n# screenpipe_sync_db.sh\n# Database operations for screenpipe sync\n# Source this file to use the functions, or execute standalone with env vars set\n\n# Source helpers\nLIB_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\nsource \"$LIB_DIR/screenpipe_sync_helpers.s\n\n# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────\n\ndb_init_tables() {\n\u0000\u0000run_sqlite_heredoc \"creating tables\" \"\nATTACH '$NAS_DB' AS nas;\nCREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;\nCREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;\nDETACH nas;\n\"\n}\n\ndb_create_indexes() {\n\u0000\u0000run_sqlite_heredoc \"creating indexes\" \"\nATTACH '$NAS_DB' AS nas;\nCREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);\nCREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);\nCREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nCREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);\n\n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"nano","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"nano","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
1529785320975639840
|
4439553758244720072
|
visual_change
|
accessibility
|
NULL
|
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cm +VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ New file ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ nano screenpipe_sync_db.sh
+-zsh:64> nano screenpipe_sync_db.sh
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib
+-zsh:65> cd lib
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ Read 297 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
UW PICO 5.09 File: screenpipe_sync_db.sh
#!/bin/bash
# screenpipe_sync_db.sh
# Database operations for screenpipe sync
# Source this file to use the functions, or execute standalone with env vars set
# Source helpers
LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$LIB_DIR/screenpipe_sync_helpers.s
# ─── DB FUNCTIONS ─────────────────────────────────────────────────────────────
db_init_tables() {
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_chunks AS SELECT * FROM main.audio_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.audio_transcriptions AS SELECT * FROM main.audio_transcriptions WHERE 0;
DETACH nas;
"
}
db_create_indexes() {
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
nano
Close Tab
screenpipe"
Close Tab
⌥⌘1
nano...
|
31425
|
NULL
|
NULL
|
NULL
|
|
31428
|
1229
|
46
|
2026-05-13T08:40:06.843931+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661606843_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-in +VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib
+-zsh:65> cd lib
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ Read 297 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh
+-zsh:66> nano screenpipe_sync_db.sh
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib \n+-zsh:65> cd lib\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 297 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh\n+-zsh:66> nano screenpipe_sync_db.sh\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $","depth":4,"on_screen":true,"value":"+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib \n+-zsh:65> cd lib\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 297 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh\n+-zsh:66> nano screenpipe_sync_db.sh\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3940972,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3982639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.59097224,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5951389,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.7878472,"top":0.05888889,"width":0.196875,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7920139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.4888889,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-18252809673407643
|
9051222184494390728
|
visual_change
|
accessibility
|
NULL
|
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-in +VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib
+-zsh:65> cd lib
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ Read 297 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh
+-zsh:66> nano screenpipe_sync_db.sh
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31429
|
1230
|
36
|
2026-05-13T08:40:08.926563+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661608926_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-in +VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib
+-zsh:65> cd lib
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ Read 297 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh
+-zsh:66> nano screenpipe_sync_db.sh
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd lib
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib \n+-zsh:65> cd lib\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 297 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh\n+-zsh:66> nano screenpipe_sync_db.sh\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd lib","depth":4,"on_screen":true,"value":"+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib \n+-zsh:65> cd lib\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 297 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh\n+-zsh:66> nano screenpipe_sync_db.sh\n+precmd:0> vcs_info \n+vcs_info:1> emulate -L zsh\n+vcs_info:2> setopt extendedglob NO_warn_create_global\n+vcs_info:4> [[ -r . ]]\n+vcs_info:6> local pat\n+vcs_info:7> local -i found retval\n+vcs_info:8> local -a enabled disabled dps\n+vcs_info:9> local usercontext vcs rrn quiltmode\n+vcs_info:10> local -x LC_MESSAGES\n+vcs_info:11> local -i maxexports\n+vcs_info:12> local -a msgs\n+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data\n+vcs_info:21> LC_MESSAGES=C \n+vcs_info:22> [[ -n '' ]]\n+vcs_info:27> vcs=-init- \n+vcs_info:27> rrn=-all- \n+vcs_info:27> quiltmode=addon \n+vcs_info:28> usercontext=default \n+vcs_info:30> VCS_INFO_hook start-up\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=start-up \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+vcs_info:31> retval=0 \n+vcs_info:32> (( retval == 1 ))\n+vcs_info:34> (( retval == 2 ))\n+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled\n+vcs_info:43> (( 0 == 0 ))\n+vcs_info:43> enabled=( all ) \n+vcs_info:45> [[ -n '' ]]\n+vcs_info:50> [[ -n all ]]\n+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla ) \n+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled\n+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps\n+vcs_info:65> VCS_INFO_maxexports\n+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset\n+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports\n+VCS_INFO_maxexports:7> maxexports=2 \n+VCS_INFO_maxexports:8> [[ 2 != <-> ]]\n+VCS_INFO_maxexports:8> (( maxexports < 1 ))\n+VCS_INFO_maxexports:13> return 0\n+vcs_info:67> (( found = 0 ))\n+vcs_info:68> vcs=bzr\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr \n+vcs_info:77> VCS_INFO_detect_bzr\n+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case bzr (/*)\n+VCS_INFO_check_com:7> case bzr (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_bzr:9> return 1\n+vcs_info:68> vcs=cdv\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv \n+vcs_info:77> VCS_INFO_detect_cdv\n+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cdv (/*)\n+VCS_INFO_check_com:7> case cdv (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cdv:9> return 1\n+vcs_info:68> vcs=cvs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs \n+vcs_info:77> VCS_INFO_detect_cvs\n+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case cvs (/*)\n+VCS_INFO_check_com:7> case cvs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_cvs:9> return 1\n+vcs_info:68> vcs=darcs\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs \n+vcs_info:77> VCS_INFO_detect_darcs\n+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case darcs (/*)\n+VCS_INFO_check_com:7> case darcs (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_darcs:9> return 1\n+vcs_info:68> vcs=fossil\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil \n+vcs_info:77> VCS_INFO_detect_fossil\n+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case fossil (/*)\n+VCS_INFO_check_com:7> case fossil (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_fossil:9> return 1\n+vcs_info:68> vcs=git\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git \n+vcs_info:77> VCS_INFO_detect_git\n+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_git:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_git:9> VCS_INFO_check_com git\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case git (/*)\n+VCS_INFO_check_com:7> case git (*)\n+VCS_INFO_check_com:12> (( 1 ))\n+VCS_INFO_check_com:12> return 0\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir\n+VCS_INFO_detect_git:9> vcs_comm[gitdir]='' \n+VCS_INFO_detect_git:15> return 1\n+vcs_info:68> vcs=hg\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg \n+vcs_info:77> VCS_INFO_detect_hg\n+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case hg (/*)\n+VCS_INFO_check_com:7> case hg (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_hg:9> return 1\n+vcs_info:68> vcs=mtn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn \n+vcs_info:77> VCS_INFO_detect_mtn\n+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case mtn (/*)\n+VCS_INFO_check_com:7> case mtn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_mtn:9> return 1\n+vcs_info:68> vcs=p4\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4 \n+vcs_info:77> VCS_INFO_detect_p4\n+VCS_INFO_detect_p4:1> local serverport p4where\n+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server\n+VCS_INFO_detect_p4:23> [[ -n '' ]]\n+VCS_INFO_detect_p4:23> return 1\n+vcs_info:68> vcs=svk\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk \n+vcs_info:77> VCS_INFO_detect_svk\n+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob\n+VCS_INFO_detect_svk:17> local -i fhash\n+VCS_INFO_detect_svk:18> fhash=0 \n+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svk (/*)\n+VCS_INFO_check_com:7> case svk (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svk:20> return 1\n+vcs_info:68> vcs=svn\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn \n+vcs_info:77> VCS_INFO_detect_svn\n+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case svn (/*)\n+VCS_INFO_check_com:7> case svn (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_svn:9> return 1\n+vcs_info:68> vcs=tla\n+vcs_info:69> [[ -n '' ]]\n+vcs_info:70> (( 1 == 0 ))\n+vcs_info:75> vcs_comm=( ) \n+vcs_info:76> VCS_INFO_get_cmd\n+VCS_INFO_get_cmd:4> local cmd\n+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd\n+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla \n+vcs_info:77> VCS_INFO_detect_tla\n+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]\n+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla\n+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit\n+VCS_INFO_check_com:7> case tla (/*)\n+VCS_INFO_check_com:7> case tla (*)\n+VCS_INFO_check_com:12> (( 0 ))\n+VCS_INFO_check_com:15> return 1\n+VCS_INFO_detect_tla:9> return 1\n+vcs_info:80> (( found == 0 ))\n+vcs_info:81> vcs=-quilt- \n+vcs_info:81> quiltmode=standalone \n+vcs_info:82> VCS_INFO_quilt standalone\n+VCS_INFO_quilt:3> (( 1 ))\n+VCS_INFO_quilt:24> (( 1 ))\n+VCS_INFO_quilt:63> (( 1 ))\n+VCS_INFO_quilt:86> (( 1 ))\n+VCS_INFO_quilt:92> emulate -L zsh\n+VCS_INFO_quilt:93> setopt extendedglob\n+VCS_INFO_quilt:94> local mode=standalone\n+VCS_INFO_quilt:95> local patches pc qstring root\n+VCS_INFO_quilt:96> local -i ret\n+VCS_INFO_quilt:97> local context\n+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env\n+VCS_INFO_quilt:99> local -A hook_com\n+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all- \n+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt\n+VCS_INFO_quilt:102> return 1\n+vcs_info:82> VCS_INFO_set --nvcs\n+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset\n+VCS_INFO_set:8> local -i i j\n+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]\n+VCS_INFO_set:11> [[ '' == -preinit- ]]\n+VCS_INFO_set:12> i=0\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='\n+VCS_INFO_set:12> i=1\n+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='\n+VCS_INFO_set:15> VCS_INFO_nvcsformats\n+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit\n+VCS_INFO_nvcsformats:6> local c v rr\n+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]\n+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs\n+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))\n+VCS_INFO_nvcsformats:15> return 0\n+VCS_INFO_set:16> [[ '' != -preinit- ]]\n+VCS_INFO_set:16> VCS_INFO_hook no-vcs\n+VCS_INFO_hook:5> local hook static func\n+VCS_INFO_hook:6> local context hook_name\n+VCS_INFO_hook:7> local -i ret\n+VCS_INFO_hook:8> local -a hooks tmp\n+VCS_INFO_hook:9> local -i debug\n+VCS_INFO_hook:11> ret=0 \n+VCS_INFO_hook:12> hook_name=no-vcs \n+VCS_INFO_hook:13> shift\n+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all- \n+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs \n+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug\n+VCS_INFO_hook:17> debug=0 \n+VCS_INFO_hook:18> (( debug ))\n+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks\n+VCS_INFO_hook:25> (( debug ))\n+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp\n+VCS_INFO_hook:29> (( debug ))\n+VCS_INFO_hook:32> hooks+=( ) \n+VCS_INFO_hook:33> (( 0 == 0 ))\n+VCS_INFO_hook:33> return 0\n+VCS_INFO_set:19> (( 0 - 1 < 0 ))\n+VCS_INFO_set:19> return 0\n+vcs_info:83> return 0\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd lib","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45894283,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4609375,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5531915,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55518615,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.64744014,"top":1.0,"width":0.09424867,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.64943486,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7280585,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5043218,"top":1.0,"width":0.010970744,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
4954777787453284012
|
9051222184494390728
|
idle
|
accessibility
|
NULL
|
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-in +VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts $ cd lib
+-zsh:65> cd lib
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
UW PICO 5.09 New Buffer
[ Read 297 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ nano screenpipe_sync_db.sh
+-zsh:66> nano screenpipe_sync_db.sh
+precmd:0> vcs_info
+vcs_info:1> emulate -L zsh
+vcs_info:2> setopt extendedglob NO_warn_create_global
+vcs_info:4> [[ -r . ]]
+vcs_info:6> local pat
+vcs_info:7> local -i found retval
+vcs_info:8> local -a enabled disabled dps
+vcs_info:9> local usercontext vcs rrn quiltmode
+vcs_info:10> local -x LC_MESSAGES
+vcs_info:11> local -i maxexports
+vcs_info:12> local -a msgs
+vcs_info:19> local -A vcs_comm hook_com backend_misc user_data
+vcs_info:21> LC_MESSAGES=C
+vcs_info:22> [[ -n '' ]]
+vcs_info:27> vcs=-init-
+vcs_info:27> rrn=-all-
+vcs_info:27> quiltmode=addon
+vcs_info:28> usercontext=default
+vcs_info:30> VCS_INFO_hook start-up
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=start-up
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-init-+start-up:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:start-up
+VCS_INFO_hook:17> zstyle -t :vcs_info:-init-+start-up:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:start-up hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-init-+start-up:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+vcs_info:31> retval=0
+vcs_info:32> (( retval == 1 ))
+vcs_info:34> (( retval == 2 ))
+vcs_info:42> zstyle -a :vcs_info:-init-:default:-all- enable enabled
+vcs_info:43> (( 0 == 0 ))
+vcs_info:43> enabled=( all )
+vcs_info:45> [[ -n '' ]]
+vcs_info:50> [[ -n all ]]
+vcs_info:51> enabled=( bzr cdv cvs darcs fossil git hg mtn p4 svk svn tla )
+vcs_info:52> zstyle -a :vcs_info:-init-:default:-all- disable disabled
+vcs_info:55> zstyle -a :vcs_info:-init-:default:-all- disable-patterns dps
+vcs_info:65> VCS_INFO_maxexports
+VCS_INFO_maxexports:5> setopt localoptions NO_shwordsplit unset
+VCS_INFO_maxexports:7> zstyle -s :vcs_info:-init-:default:-all- max-exports maxexports
+VCS_INFO_maxexports:7> maxexports=2
+VCS_INFO_maxexports:8> [[ 2 != <-> ]]
+VCS_INFO_maxexports:8> (( maxexports < 1 ))
+VCS_INFO_maxexports:13> return 0
+vcs_info:67> (( found = 0 ))
+vcs_info:68> vcs=bzr
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:bzr:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=bzr
+vcs_info:77> VCS_INFO_detect_bzr
+VCS_INFO_detect_bzr:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_bzr:7> [[ '' == --flavours ]]
+VCS_INFO_detect_bzr:9> VCS_INFO_check_com bzr
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case bzr (/*)
+VCS_INFO_check_com:7> case bzr (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_bzr:9> return 1
+vcs_info:68> vcs=cdv
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cdv:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cdv
+vcs_info:77> VCS_INFO_detect_cdv
+VCS_INFO_detect_cdv:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cdv:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cdv:9> VCS_INFO_check_com cdv
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cdv (/*)
+VCS_INFO_check_com:7> case cdv (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cdv:9> return 1
+vcs_info:68> vcs=cvs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:cvs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=cvs
+vcs_info:77> VCS_INFO_detect_cvs
+VCS_INFO_detect_cvs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_cvs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_cvs:9> VCS_INFO_check_com cvs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case cvs (/*)
+VCS_INFO_check_com:7> case cvs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_cvs:9> return 1
+vcs_info:68> vcs=darcs
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:darcs:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=darcs
+vcs_info:77> VCS_INFO_detect_darcs
+VCS_INFO_detect_darcs:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_darcs:7> [[ '' == --flavours ]]
+VCS_INFO_detect_darcs:9> VCS_INFO_check_com darcs
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case darcs (/*)
+VCS_INFO_check_com:7> case darcs (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_darcs:9> return 1
+vcs_info:68> vcs=fossil
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:fossil:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=fossil
+vcs_info:77> VCS_INFO_detect_fossil
+VCS_INFO_detect_fossil:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_fossil:7> [[ '' == --flavours ]]
+VCS_INFO_detect_fossil:9> VCS_INFO_check_com fossil
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case fossil (/*)
+VCS_INFO_check_com:7> case fossil (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_fossil:9> return 1
+vcs_info:68> vcs=git
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:git:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=git
+vcs_info:77> VCS_INFO_detect_git
+VCS_INFO_detect_git:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_git:7> [[ '' == --flavours ]]
+VCS_INFO_detect_git:9> VCS_INFO_check_com git
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case git (/*)
+VCS_INFO_check_com:7> case git (*)
+VCS_INFO_check_com:12> (( 1 ))
+VCS_INFO_check_com:12> return 0
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=+VCS_INFO_detect_git:9> git rev-parse --git-dir
+VCS_INFO_detect_git:9> vcs_comm[gitdir]=''
+VCS_INFO_detect_git:15> return 1
+vcs_info:68> vcs=hg
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:hg:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=hg
+vcs_info:77> VCS_INFO_detect_hg
+VCS_INFO_detect_hg:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_hg:7> [[ '' == --flavours ]]
+VCS_INFO_detect_hg:9> VCS_INFO_check_com hg
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case hg (/*)
+VCS_INFO_check_com:7> case hg (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_hg:9> return 1
+vcs_info:68> vcs=mtn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:mtn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=mtn
+vcs_info:77> VCS_INFO_detect_mtn
+VCS_INFO_detect_mtn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_mtn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_mtn:9> VCS_INFO_check_com mtn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case mtn (/*)
+VCS_INFO_check_com:7> case mtn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_mtn:9> return 1
+vcs_info:68> vcs=p4
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:p4:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=p4
+vcs_info:77> VCS_INFO_detect_p4
+VCS_INFO_detect_p4:1> local serverport p4where
+VCS_INFO_detect_p4:3> zstyle -t :vcs_info:p4:default:-all- use-server
+VCS_INFO_detect_p4:23> [[ -n '' ]]
+VCS_INFO_detect_p4:23> return 1
+vcs_info:68> vcs=svk
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svk:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svk
+vcs_info:77> VCS_INFO_detect_svk
+VCS_INFO_detect_svk:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svk:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svk:16> setopt localoptions noksharrays extendedglob
+VCS_INFO_detect_svk:17> local -i fhash
+VCS_INFO_detect_svk:18> fhash=0
+VCS_INFO_detect_svk:20> VCS_INFO_check_com svk
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svk (/*)
+VCS_INFO_check_com:7> case svk (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svk:20> return 1
+vcs_info:68> vcs=svn
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:svn:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=svn
+vcs_info:77> VCS_INFO_detect_svn
+VCS_INFO_detect_svn:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_svn:7> [[ '' == --flavours ]]
+VCS_INFO_detect_svn:9> VCS_INFO_check_com svn
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case svn (/*)
+VCS_INFO_check_com:7> case svn (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_svn:9> return 1
+vcs_info:68> vcs=tla
+vcs_info:69> [[ -n '' ]]
+vcs_info:70> (( 1 == 0 ))
+vcs_info:75> vcs_comm=( )
+vcs_info:76> VCS_INFO_get_cmd
+VCS_INFO_get_cmd:4> local cmd
+VCS_INFO_get_cmd:5> zstyle -s :vcs_info:tla:default:-all- command cmd
+VCS_INFO_get_cmd:6> vcs_comm[cmd]=tla
+vcs_info:77> VCS_INFO_detect_tla
+VCS_INFO_detect_tla:5> setopt localoptions NO_shwordsplit
+VCS_INFO_detect_tla:7> [[ '' == --flavours ]]
+VCS_INFO_detect_tla:9> VCS_INFO_check_com tla
+VCS_INFO_check_com:5> setopt localoptions NO_shwordsplit
+VCS_INFO_check_com:7> case tla (/*)
+VCS_INFO_check_com:7> case tla (*)
+VCS_INFO_check_com:12> (( 0 ))
+VCS_INFO_check_com:15> return 1
+VCS_INFO_detect_tla:9> return 1
+vcs_info:80> (( found == 0 ))
+vcs_info:81> vcs=-quilt-
+vcs_info:81> quiltmode=standalone
+vcs_info:82> VCS_INFO_quilt standalone
+VCS_INFO_quilt:3> (( 1 ))
+VCS_INFO_quilt:24> (( 1 ))
+VCS_INFO_quilt:63> (( 1 ))
+VCS_INFO_quilt:86> (( 1 ))
+VCS_INFO_quilt:92> emulate -L zsh
+VCS_INFO_quilt:93> setopt extendedglob
+VCS_INFO_quilt:94> local mode=standalone
+VCS_INFO_quilt:95> local patches pc qstring root
+VCS_INFO_quilt:96> local -i ret
+VCS_INFO_quilt:97> local context
+VCS_INFO_quilt:98> local -a applied unapplied applied_string unapplied_string quiltcommand quilt_env
+VCS_INFO_quilt:99> local -A hook_com
+VCS_INFO_quilt:101> context=:vcs_info:-quilt-.quilt-standalone:default:-all-
+VCS_INFO_quilt:102> zstyle -t :vcs_info:-quilt-.quilt-standalone:default:-all- use-quilt
+VCS_INFO_quilt:102> return 1
+vcs_info:82> VCS_INFO_set --nvcs
+VCS_INFO_set:7> setopt localoptions noksharrays NO_shwordsplit unset
+VCS_INFO_set:8> local -i i j
+VCS_INFO_set:10> [[ --nvcs == --nvcs ]]
+VCS_INFO_set:11> [[ '' == -preinit- ]]
+VCS_INFO_set:12> i=0
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_0_='
+VCS_INFO_set:12> i=1
+VCS_INFO_set:13> typeset -g 'vcs_info_msg_1_='
+VCS_INFO_set:15> VCS_INFO_nvcsformats
+VCS_INFO_nvcsformats:5> setopt localoptions noksharrays NO_shwordsplit
+VCS_INFO_nvcsformats:6> local c v rr
+VCS_INFO_nvcsformats:8> [[ '' == -preinit- ]]
+VCS_INFO_nvcsformats:13> zstyle -a :vcs_info:-quilt-:default:-all- nvcsformats msgs
+VCS_INFO_nvcsformats:14> (( 0 > maxexports ))
+VCS_INFO_nvcsformats:15> return 0
+VCS_INFO_set:16> [[ '' != -preinit- ]]
+VCS_INFO_set:16> VCS_INFO_hook no-vcs
+VCS_INFO_hook:5> local hook static func
+VCS_INFO_hook:6> local context hook_name
+VCS_INFO_hook:7> local -i ret
+VCS_INFO_hook:8> local -a hooks tmp
+VCS_INFO_hook:9> local -i debug
+VCS_INFO_hook:11> ret=0
+VCS_INFO_hook:12> hook_name=no-vcs
+VCS_INFO_hook:13> shift
+VCS_INFO_hook:14> context=:vcs_info:-quilt-+no-vcs:default:-all-
+VCS_INFO_hook:15> static=:vcs_info-static_hooks:no-vcs
+VCS_INFO_hook:17> zstyle -t :vcs_info:-quilt-+no-vcs:default:-all- debug
+VCS_INFO_hook:17> debug=0
+VCS_INFO_hook:18> (( debug ))
+VCS_INFO_hook:24> zstyle -a :vcs_info-static_hooks:no-vcs hooks hooks
+VCS_INFO_hook:25> (( debug ))
+VCS_INFO_hook:28> zstyle -a :vcs_info:-quilt-+no-vcs:default:-all- hooks tmp
+VCS_INFO_hook:29> (( debug ))
+VCS_INFO_hook:32> hooks+=( )
+VCS_INFO_hook:33> (( 0 == 0 ))
+VCS_INFO_hook:33> return 0
+VCS_INFO_set:19> (( 0 - 1 < 0 ))
+VCS_INFO_set:19> return 0
+vcs_info:83> return 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/scripts/lib $ cd lib
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
-zsh...
|
31426
|
NULL
|
NULL
|
NULL
|
|
31430
|
1229
|
47
|
2026-05-13T08:40:15.599974+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661615599_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"}]...
|
7237163291291943064
|
-6633197599445250226
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U...
|
31428
|
NULL
|
NULL
|
NULL
|
|
31431
|
1230
|
37
|
2026-05-13T08:40:15.629174+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661615629_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"19m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12200798,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.20378989,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.027593086,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.12932181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.9075798,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"bounds":{"left":0.9132314,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9694149,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.10472074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07347074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.035904255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"bounds":{"left":0.8068484,"top":0.07102953,"width":0.05851064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8650266,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"bounds":{"left":0.8706782,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.21941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8587101,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"bounds":{"left":0.8640292,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.22041224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.020944148,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"bounds":{"left":0.7918883,"top":0.07102953,"width":0.0930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.113696806,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.13198139,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.10704787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"bounds":{"left":0.8756649,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"bounds":{"left":0.88231385,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"bounds":{"left":0.8327792,"top":0.07102953,"width":0.05651596,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.045545213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.051861703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"bounds":{"left":0.8284575,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.038896278,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"bounds":{"left":0.81549203,"top":0.07102953,"width":0.119015954,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09375,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.22041224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"bounds":{"left":0.87333775,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"bounds":{"left":0.79388297,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.0013297872,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.07114362,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.004654255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.22539894,"height":0.0007980846},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.015625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"bounds":{"left":0.9640958,"top":0.07102953,"width":0.027925532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"bounds":{"left":0.96642286,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-311830609310768342
|
8592654767395407901
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31432
|
1229
|
48
|
2026-05-13T08:40:16.157064+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661616157_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd
"$(
dirname
"${
BASH_SOURCE
[0]}")" &&
pwd
)"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_helpers.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_db.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_files.sh"
# ──────────────────────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
10
-
189
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
db_verify
"
$TARGET_DATE
"
"
$SRC_FRAMES
"
"
$SRC_ELEMENTS
"
"
$SRC_UI
"
"
$SRC_OCR
"
"
$SRC_MEETINGS
"
"
$SRC_ACHUNKS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
2
-
41
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
copy_logs
"
$TARGET_DATE
"
Thoughts
6
/
7
tasks
done
5
more
Refactor main screenpipe_sync.sh to use modules
7
Test backward compatibility of main script
Thoughts
Command
bash
bash
-n
/volume1/screenpipe/screenpipe_sync.sh
Canceled
terminal command
Feedback submitted
this is something that will live inside mac and run it from there. It is here for documentation mostly. I want the whole lib to copy to mac and run from there. So I will test it there. Alos I noticed that audio files are not synced. Only video. I neeed to copy data from ~/.screenpipe/data there audio lives in files named like LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4 or somethign simillar (path in sqlite db). I want to copy data form that particular data as the part of the sycn process. Add it to the script sync flow.
Expand content to scroll
Thought
for 1s
6
/
7
tasks
done
5
more
Refactor main screenpipe_sync.sh to use modules
7
Add audio file copying to sync flow
Thought
for 1s
Read
screenpipe_sync_files.sh
Thought
for 1s
screenpipe_sync_files.sh
+
37
total_size
=
$(
du
-sh
"
$nas_audio
"
|
cut
-f1
)
printf
" %-36s %d file(s), %s\n"
"audio files total:"
"
$count
"
"
$total_size
"
|
tee
-a
"
$LOG_FILE
"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync_files.sh
+
3
step
"Copying audio files for
$TARGET_DATE
"
copy_audio_files
"
$TARGET_DATE
"
step
"Copying screenpipe logs for
$TARGET_DATE
"
Thoughts
screenpipe_sync.sh
+
4
# ─── COPY AUDIO FILES ─────────────────────────────────────────────────────────
step
"Copying audio files for
$TARGET_DATE
"
copy_audio_files
"
$TARGET_DATE
"
# ─── COPY LOGS ────────────────────────────────────────────────────────────────
Thoughts
7
/
7
tasks
done
Thought
for 1s
I've completed the refactoring
and added audio file syncing. Here's what was done:
Refactoring:
Created
lib/
directory with three modules:
lib/screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
lib/screenpipe_sync_db.sh
- all DB operations (tables, indexes
, sync, FTS, verify)
lib/screenpipe_sync_files.sh
- data folder, audio files, and log
copying
Refactored
screenpipe_sync.sh
to source
the modules and call functions
Main script
maintains exact same CLI interface for backward compatibility
Audio File Syncing:
Added
copy_audio_files()
function to
lib/screenpipe_sync_files.sh
Queries
audio_chunks
table for file paths on
target date
Copies audio files (e.g.,
LakyLak bose
qc35 II (input)_2026-05
-12_06-49-17.mp4
) from
~/.screenpipe/data
to
$NAS_DATA/audio/
Integrated into main sync flow between data folder and log
copying
Usage:
bash...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"19m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"File sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Cascade cannot create","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"because it already exists.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SCRIPT_DIR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"dirname","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"${","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"BASH_SOURCE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[0]}\")\" &&","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pwd","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"source","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SCRIPT_DIR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/lib/screenpipe_sync_helpers.sh\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"source","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SCRIPT_DIR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/lib/screenpipe_sync_db.sh\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"source","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SCRIPT_DIR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/lib/screenpipe_sync_files.sh\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ──────────────────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"10","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"189","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"meetings\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_chunks\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"check","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio_transcriptions\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$V_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db_verify","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_FRAMES","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ELEMENTS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_UI","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_OCR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_MEETINGS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ACHUNKS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SRC_ATRANS","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"41","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"else","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"rsync logs → NAS\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"skipped (no matching logs)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"copy_logs","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bash","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bash","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-n","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/screenpipe_sync.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Canceled","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"terminal command","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"this is something that will live inside mac and run it from there. It is here for documentation mostly. I want the whole lib to copy to mac and run from there. So I will test it there. Alos I noticed that audio files are not synced. Only video. I neeed to copy data from ~/.screenpipe/data there audio lives in files named like LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4 or somethign simillar (path in sqlite db). I want to copy data form that particular data as the part of the sycn process. Add it to the script sync flow.","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Add audio file copying to sync flow","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"37","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"total_size","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"du","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$nas_audio","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cut","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-f1","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"printf","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" %-36s %d file(s), %s\\n\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"audio files total:\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$count","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$total_size","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tee","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-a","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$LOG_FILE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ──────────────────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"step","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"Copying audio files for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"copy_audio_files","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"step","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"Copying screenpipe logs for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── COPY AUDIO FILES ─────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"step","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"Copying audio files for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"copy_audio_files","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ─── COPY LOGS ────────────────────────────────────────────────────────────────","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've completed the refactoring","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"and added audio file syncing. Here's what was done:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactoring:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib/","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib/screenpipe_sync_helpers.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib/screenpipe_sync_db.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":", sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib/screenpipe_sync_files.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder, audio files, and log","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactored","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to source","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the modules and call functions","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Audio File Syncing:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Added","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"copy_audio_files()","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"function to","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib/screenpipe_sync_files.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Queries","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"audio_chunks","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"table for file paths on","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"target date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Copies audio files (e.g.,","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"LakyLak bose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"qc35 II (input)_2026-05","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-12_06-49-17.mp4","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") from","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/data","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$NAS_DATA/audio/","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Integrated into main sync flow between data folder and log","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"copying","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Usage:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bash","depth":22,"on_screen":true,"role_description":"text"}]...
|
-260204109705918140
|
8578556281700165851
|
visual_change
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd
"$(
dirname
"${
BASH_SOURCE
[0]}")" &&
pwd
)"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_helpers.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_db.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_files.sh"
# ──────────────────────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync.sh
+
10
-
189
check
"meetings"
"
$V_MEETINGS
"
"
$SRC_MEETINGS
"
check
"audio_chunks"
"
$V_ACHUNKS
"
"
$SRC_ACHUNKS
"
check
"audio_transcriptions"
"
$V_ATRANS
"
"
$SRC_ATRANS
"
db_verify
"
$TARGET_DATE
"
"
$SRC_FRAMES
"
"
$SRC_ELEMENTS
"
"
$SRC_UI
"
"
$SRC_OCR
"
"
$SRC_MEETINGS
"
"
$SRC_ACHUNKS
"
"
$SRC_ATRANS
"
Thoughts
screenpipe_sync.sh
+
2
-
41
else
printf
" %-36s %s\n"
"rsync logs → NAS"
"skipped (no matching logs)"
fi
copy_logs
"
$TARGET_DATE
"
Thoughts
6
/
7
tasks
done
5
more
Refactor main screenpipe_sync.sh to use modules
7
Test backward compatibility of main script
Thoughts
Command
bash
bash
-n
/volume1/screenpipe/screenpipe_sync.sh
Canceled
terminal command
Feedback submitted
this is something that will live inside mac and run it from there. It is here for documentation mostly. I want the whole lib to copy to mac and run from there. So I will test it there. Alos I noticed that audio files are not synced. Only video. I neeed to copy data from ~/.screenpipe/data there audio lives in files named like LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4 or somethign simillar (path in sqlite db). I want to copy data form that particular data as the part of the sycn process. Add it to the script sync flow.
Expand content to scroll
Thought
for 1s
6
/
7
tasks
done
5
more
Refactor main screenpipe_sync.sh to use modules
7
Add audio file copying to sync flow
Thought
for 1s
Read
screenpipe_sync_files.sh
Thought
for 1s
screenpipe_sync_files.sh
+
37
total_size
=
$(
du
-sh
"
$nas_audio
"
|
cut
-f1
)
printf
" %-36s %d file(s), %s\n"
"audio files total:"
"
$count
"
"
$total_size
"
|
tee
-a
"
$LOG_FILE
"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
Thoughts
screenpipe_sync_files.sh
+
3
step
"Copying audio files for
$TARGET_DATE
"
copy_audio_files
"
$TARGET_DATE
"
step
"Copying screenpipe logs for
$TARGET_DATE
"
Thoughts
screenpipe_sync.sh
+
4
# ─── COPY AUDIO FILES ─────────────────────────────────────────────────────────
step
"Copying audio files for
$TARGET_DATE
"
copy_audio_files
"
$TARGET_DATE
"
# ─── COPY LOGS ────────────────────────────────────────────────────────────────
Thoughts
7
/
7
tasks
done
Thought
for 1s
I've completed the refactoring
and added audio file syncing. Here's what was done:
Refactoring:
Created
lib/
directory with three modules:
lib/screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
lib/screenpipe_sync_db.sh
- all DB operations (tables, indexes
, sync, FTS, verify)
lib/screenpipe_sync_files.sh
- data folder, audio files, and log
copying
Refactored
screenpipe_sync.sh
to source
the modules and call functions
Main script
maintains exact same CLI interface for backward compatibility
Audio File Syncing:
Added
copy_audio_files()
function to
lib/screenpipe_sync_files.sh
Queries
audio_chunks
table for file paths on
target date
Copies audio files (e.g.,
LakyLak bose
qc35 II (input)_2026-05
-12_06-49-17.mp4
) from
~/.screenpipe/data
to
$NAS_DATA/audio/
Integrated into main sync flow between data folder and log
copying
Usage:
bash...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31433
|
1229
|
49
|
2026-05-13T08:40:21.586139+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661621586_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"19m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"}]...
|
-7130098813448887178
|
-1783654714703107559
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh...
|
31432
|
NULL
|
NULL
|
NULL
|
|
31434
|
1230
|
38
|
2026-05-13T08:40:21.596995+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661621596_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"19m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Let me analyze the current script structure to propose a logical split:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12200798,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 2s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.20378989,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Structure approach","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you prefer:","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.027593086,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A library approach where the main script sources helper functions (e.g.,","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.12932181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.9075798,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":26,"bounds":{"left":0.9132314,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")","depth":24,"bounds":{"left":0.9694149,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Separate executable scripts that can be run independently","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.10472074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A mix (some libraries, some executables)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07347074,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directory structure","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.035904255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Are you comfortable creating a","depth":22,"bounds":{"left":0.8068484,"top":0.07102953,"width":0.05851064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8650266,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":24,"bounds":{"left":0.8706782,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"subdirectory for helper modules, or do you prefer everything in the same directory?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.21941489,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": Do you want the single","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8587101,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"bounds":{"left":0.8640292,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to still work as-is (sourcing the new modules), or are you okay with changing the entry point?","depth":22,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.22041224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Granularity","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.020944148,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":": How fine-grained should the split be? For example:","depth":22,"bounds":{"left":0.7918883,"top":0.07102953,"width":0.0930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Minimal split: helpers + main orchestrator","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Moderate split: helpers + db operations + file operations + main","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.113696806,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Fine-grained: separate modules for vision data, audio data, FTS, files, etc.","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.13198139,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"My initial recommendation would be a moderate split with a","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.10704787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.8703458,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":23,"bounds":{"left":0.8756649,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory:","depth":21,"bounds":{"left":0.88231385,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.05618351,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, sqlite helpers","depth":22,"bounds":{"left":0.8327792,"top":0.07102953,"width":0.05651596,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.045545213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.051861703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":22,"bounds":{"left":0.8284575,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.038896278,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- main orchestrator (config, date handling, preflight, module calls)","depth":22,"bounds":{"left":0.81549203,"top":0.07102953,"width":0.119015954,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this approach align with what you had in mind?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09375,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.","depth":25,"bounds":{"left":0.7659575,"top":0.07102953,"width":0.22041224,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Expand content to scroll","depth":23,"bounds":{"left":0.87333775,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"bounds":{"left":0.79388297,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.0013297872,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.07114362,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.004654255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.22539894,"height":0.0007980846},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.015625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"bounds":{"left":0.9640958,"top":0.07102953,"width":0.027925532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"bounds":{"left":0.96642286,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09208777,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.013630319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78457445,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"bounds":{"left":0.7898936,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"bounds":{"left":0.7965425,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"bounds":{"left":0.81449467,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"bounds":{"left":0.8287899,"top":0.07102953,"width":0.058843084,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.03856383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"bounds":{"left":0.8194814,"top":0.07102953,"width":0.09674202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"bounds":{"left":0.82513297,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.010638298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78125,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"bounds":{"left":0.82579786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"bounds":{"left":0.85538566,"top":0.07102953,"width":0.11502659,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"bounds":{"left":0.82413566,"top":0.07102953,"width":0.026928192,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07712766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.05119681,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.14793883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.048204787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"bounds":{"left":0.81914896,"top":0.07102953,"width":0.09042553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"bounds":{"left":0.8061835,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.08543883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12367021,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"bounds":{"left":0.8071808,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7649601,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76795214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.7815825,"top":0.07102953,"width":0.0009973404,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"bounds":{"left":0.7825798,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"bounds":{"left":0.76894945,"top":0.07102953,"width":0.010305851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.77892286,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"bounds":{"left":0.7809175,"top":0.07102953,"width":0.0043218085,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.7849069,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.046210106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7652925,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.97539896,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"bounds":{"left":0.9880319,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.056848403,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
1351809452633949739
|
-1783689349449405923
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
19m
1m
Show More
Thoughts
Let me analyze the current script structure to propose a logical split:
Read
screenpipe_sync.sh
Thought
for 2s
I can see the script is 420 lines with several distinct logical sections. Before I create a plan, I have a few questions:
Structure approach
: Do you prefer:
A library approach where the main script sources helper functions (e.g.,
screenpipe_sync_helpers.sh
)
Separate executable scripts that can be run independently
A mix (some libraries, some executables)
Directory structure
: Are you comfortable creating a
lib
subdirectory for helper modules, or do you prefer everything in the same directory?
Backward compatibility
: Do you want the single
screenpipe_sync.sh
to still work as-is (sourcing the new modules), or are you okay with changing the entry point?
Granularity
: How fine-grained should the split be? For example:
Minimal split: helpers + main orchestrator
Moderate split: helpers + db operations + file operations + main
Fine-grained: separate modules for vision data, audio data, FTS, files, etc.
My initial recommendation would be a moderate split with a
lib
directory:
screenpipe_sync_helpers.sh
- logging, timing, sqlite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
screenpipe_sync.sh
- main orchestrator (config, date handling, preflight, module calls)
Does this approach align with what you had in mind?
Feedback submitted
there should ber orchestrator to run it all, Old script should still be working. Maybe lets add lib folder and put it there. THe idea is is something needs change just the part that needs updated can be modified and also run separattelly. If possible.
Expand content to scroll
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31435
|
1229
|
50
|
2026-05-13T08:40:40.164301+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661640164_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"20m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"File sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Cascade cannot create","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"because it already exists.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SCRIPT_DIR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd","depth":24,"on_screen":true,"role_description":"text"}]...
|
-8642665039810764440
|
-2297103555117503933
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31436
|
1230
|
39
|
2026-05-13T08:40:40.174498+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661640174_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd
"$(
dirname
"${
BASH_SOURCE
[0]}")" &&
pwd
)"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_helpers.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_db.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_files.sh"
# ──────────────────────────────────────────────────────────────────────────────...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"20m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"bounds":{"left":0.79388297,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.0013297872,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.07114362,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.004654255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.22539894,"height":0.0007980846},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.015625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"bounds":{"left":0.9640958,"top":0.07102953,"width":0.027925532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"bounds":{"left":0.96642286,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09208777,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.013630319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78457445,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"bounds":{"left":0.7898936,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"bounds":{"left":0.7965425,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"bounds":{"left":0.81449467,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"bounds":{"left":0.8287899,"top":0.07102953,"width":0.058843084,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.03856383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"bounds":{"left":0.8194814,"top":0.07102953,"width":0.09674202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"bounds":{"left":0.82513297,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.010638298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78125,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"bounds":{"left":0.82579786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"bounds":{"left":0.85538566,"top":0.07102953,"width":0.11502659,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"bounds":{"left":0.82413566,"top":0.07102953,"width":0.026928192,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07712766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.05119681,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.14793883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.048204787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"bounds":{"left":0.81914896,"top":0.07102953,"width":0.09042553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"bounds":{"left":0.8061835,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.08543883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12367021,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"bounds":{"left":0.8071808,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7649601,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76795214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.7815825,"top":0.07102953,"width":0.0009973404,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"bounds":{"left":0.7825798,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"bounds":{"left":0.76894945,"top":0.07102953,"width":0.010305851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.77892286,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"bounds":{"left":0.7809175,"top":0.07102953,"width":0.0043218085,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.7849069,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.046210106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7652925,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.97539896,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"bounds":{"left":0.9880319,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.056848403,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.039893616,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.9730718,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0063164895,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"bounds":{"left":0.81515956,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"bounds":{"left":0.82081115,"top":0.07102953,"width":0.034906916,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8188165,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"bounds":{"left":0.8849734,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"bounds":{"left":0.88863033,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.90325797,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"bounds":{"left":0.9271942,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"bounds":{"left":0.9325133,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"bounds":{"left":0.9361702,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.04255319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.9734042,"top":0.07102953,"width":0.0063164895,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9840425,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"bounds":{"left":0.81515956,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"bounds":{"left":0.82081115,"top":0.07102953,"width":0.034906916,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"File sync complete for","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"bounds":{"left":0.8444149,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.859375,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"bounds":{"left":0.88297874,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"bounds":{"left":0.88863033,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"bounds":{"left":0.89228725,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.9069149,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"bounds":{"left":0.93085104,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"bounds":{"left":0.9361702,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"bounds":{"left":0.94015956,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7652925,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"bounds":{"left":0.77293885,"top":0.07102953,"width":0.03324468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Cascade cannot create","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.039893616,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.80285907,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.80851066,"top":0.07102953,"width":0.036236703,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"because it already exists.","depth":21,"bounds":{"left":0.8444149,"top":0.07102953,"width":0.043550532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.03357713,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98138297,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"bounds":{"left":0.98670214,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":23,"bounds":{"left":0.98836434,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SCRIPT_DIR","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.01861702,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.78390956,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"bounds":{"left":0.7859042,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd","depth":24,"bounds":{"left":0.7912234,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"dirname","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.013297873,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"${","depth":24,"bounds":{"left":0.81515956,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"BASH_SOURCE","depth":24,"bounds":{"left":0.8224734,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[0]}\")\" &&","depth":24,"bounds":{"left":0.84275264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pwd","depth":24,"bounds":{"left":0.8630319,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":")\"","depth":24,"bounds":{"left":0.86835104,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"source","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SCRIPT_DIR","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/lib/screenpipe_sync_helpers.sh\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.058843084,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"source","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SCRIPT_DIR","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/lib/screenpipe_sync_db.sh\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.049534574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"source","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$SCRIPT_DIR","depth":24,"bounds":{"left":0.78025264,"top":0.07102953,"width":0.020279255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/lib/screenpipe_sync_files.sh\"","depth":24,"bounds":{"left":0.8005319,"top":0.07102953,"width":0.05518617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"# ──────────────────────────────────────────────────────────────────────────────","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.14694148,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
8010018234541859286
|
-1144181500754843069
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd
"$(
dirname
"${
BASH_SOURCE
[0]}")" &&
pwd
)"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_helpers.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_db.sh"
source
"
$SCRIPT_DIR
/lib/screenpipe_sync_files.sh"
# ──────────────────────────────────────────────────────────────────────────────...
|
31434
|
NULL
|
NULL
|
NULL
|
|
31438
|
1230
|
40
|
2026-05-13T08:40:41.320310+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661641320_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"20m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"bounds":{"left":0.79388297,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.0013297872,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.07114362,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.004654255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.22539894,"height":0.0007980846},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.015625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"bounds":{"left":0.9640958,"top":0.07102953,"width":0.027925532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"bounds":{"left":0.96642286,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09208777,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.013630319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78457445,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"bounds":{"left":0.7898936,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"bounds":{"left":0.7965425,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"bounds":{"left":0.81449467,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"bounds":{"left":0.8287899,"top":0.07102953,"width":0.058843084,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.03856383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"bounds":{"left":0.8194814,"top":0.07102953,"width":0.09674202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"bounds":{"left":0.82513297,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.010638298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78125,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"bounds":{"left":0.82579786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"bounds":{"left":0.85538566,"top":0.07102953,"width":0.11502659,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"bounds":{"left":0.82413566,"top":0.07102953,"width":0.026928192,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07712766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.05119681,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.14793883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.048204787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"bounds":{"left":0.81914896,"top":0.07102953,"width":0.09042553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"bounds":{"left":0.8061835,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.08543883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12367021,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"bounds":{"left":0.8071808,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7649601,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76795214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.7815825,"top":0.07102953,"width":0.0009973404,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"bounds":{"left":0.7825798,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"bounds":{"left":0.76894945,"top":0.07102953,"width":0.010305851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.77892286,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"bounds":{"left":0.7809175,"top":0.07102953,"width":0.0043218085,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.7849069,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.046210106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7652925,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.97539896,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"bounds":{"left":0.9880319,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.056848403,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.039893616,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.9730718,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0063164895,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"bounds":{"left":0.81515956,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"bounds":{"left":0.82081115,"top":0.07102953,"width":0.034906916,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.04055851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"bounds":{"left":0.8188165,"top":0.07102953,"width":0.022273935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"bounds":{"left":0.84075797,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.8557181,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"bounds":{"left":0.8793218,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"bounds":{"left":0.8849734,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"bounds":{"left":0.88863033,"top":0.07102953,"width":0.014960106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.90325797,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"bounds":{"left":0.9271942,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"bounds":{"left":0.9325133,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"bounds":{"left":0.9361702,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.04255319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.9734042,"top":0.07102953,"width":0.0063164895,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9840425,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"bounds":{"left":0.98603725,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"bounds":{"left":0.79488033,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"bounds":{"left":0.8021942,"top":0.07102953,"width":0.011303191,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.81349736,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"bounds":{"left":0.81515956,"top":0.07102953,"width":0.0056515955,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"bounds":{"left":0.82081115,"top":0.07102953,"width":0.034906916,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-6665023115142984524
|
-2298158536524617149
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
31437
|
1229
|
51
|
2026-05-13T08:40:41.344197+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661641344_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd
"$(
dirname
"${...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"20m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"File sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Cascade cannot create","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"because it already exists.","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SCRIPT_DIR","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"$(","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"dirname","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"${","depth":24,"on_screen":true,"role_description":"text"}]...
|
86080947811482666
|
-2297103555117503933
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"File sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
5
/
7
tasks
done
4
more
Extract file operations to lib/screenpipe_sync_files.sh
6
Refactor main screenpipe_sync.sh to use modules
1
more
Thoughts
Read
screenpipe_sync.sh
Thought
for 1s
Cascade cannot create
screenpipe_sync.sh
because it already exists.
Thoughts
screenpipe_sync.sh
+
5
-
51
SCRIPT_DIR
=
"$(
cd
"$(
dirname
"${...
|
31435
|
NULL
|
NULL
|
NULL
|
|
31440
|
1230
|
41
|
2026-05-13T08:40:42.343711+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661642343_m2.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"bounds":{"left":0.0,"top":0.047885075,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.05586592,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"bounds":{"left":0.0,"top":0.07581804,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.083798885,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"bounds":{"left":0.0,"top":0.103751,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.11173184,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"bounds":{"left":0.005319149,"top":0.11811652,"width":0.0033244682,"height":0.007980846},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.0056515955,"top":0.118914604,"width":0.0013297872,"height":0.0071827616}},{"char_start":1,"char_count":1,"bounds":{"left":0.006981383,"top":0.118914604,"width":0.0016622341,"height":0.0071827616}}],"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"bounds":{"left":0.0,"top":0.13168396,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.1396648,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"bounds":{"left":0.0,"top":0.15961692,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"bounds":{"left":0.0,"top":0.18754987,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.19553073,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"bounds":{"left":0.0,"top":0.21548285,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.22346368,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"bounds":{"left":0.0,"top":0.2434158,"width":0.011635638,"height":0.02793296},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.0033244682,"top":0.25139666,"width":0.004986702,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"bounds":{"left":0.01462766,"top":0.047885075,"width":0.013630319,"height":0.023144454},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"bounds":{"left":0.01462766,"top":0.054269753,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014960106,"top":0.055067837,"width":0.0019946808,"height":0.008778931}},{"char_start":1,"char_count":7,"bounds":{"left":0.016954787,"top":0.055067837,"width":0.011303191,"height":0.008778931}}],"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"bounds":{"left":0.011635638,"top":0.07102953,"width":0.0831117,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.0726257,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"bounds":{"left":0.016954787,"top":0.07102953,"width":0.035904255,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"bounds":{"left":0.016954787,"top":0.07342378,"width":0.035904255,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.07342378,"width":0.0019946808,"height":0.009577015}},{"char_start":1,"char_count":20,"bounds":{"left":0.018949468,"top":0.07342378,"width":0.034242023,"height":0.009577015}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.08699122,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.08699122,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"bounds":{"left":0.025930852,"top":0.08699122,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.087789305,"width":0.0026595744,"height":0.0103751}},{"char_start":1,"char_count":7,"bounds":{"left":0.02825798,"top":0.087789305,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.10215483,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.10215483,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0063164895,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.10215483,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":2,"bounds":{"left":0.027925532,"top":0.10215483,"width":0.004654255,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.10215483,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.11652035,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.11652035,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"bounds":{"left":0.025930852,"top":0.11652035,"width":0.0076462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.11731844,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":3,"bounds":{"left":0.02825798,"top":0.11731844,"width":0.005319149,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.01462766,"top":0.13088587,"width":0.0043218085,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"bounds":{"left":0.025930852,"top":0.13088587,"width":0.0039893617,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.13168396,"width":0.0009973404,"height":0.0103751}},{"char_start":1,"char_count":2,"bounds":{"left":0.026928192,"top":0.13168396,"width":0.0033244682,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.13168396,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.14604948,"width":0.003656915,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"bounds":{"left":0.027925532,"top":0.14604948,"width":0.039893616,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.14604948,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":20,"bounds":{"left":0.029920213,"top":0.14604948,"width":0.037898935,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.14604948,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.16041501,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"bounds":{"left":0.027925532,"top":0.16041501,"width":0.04255319,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.16121309,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":23,"bounds":{"left":0.029920213,"top":0.16121309,"width":0.04089096,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.16121309,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.021941489,"top":0.17478053,"width":0.003656915,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"bounds":{"left":0.027925532,"top":0.17478053,"width":0.048204787,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.02825798,"top":0.17557861,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.029920213,"top":0.17557861,"width":0.046210106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.17557861,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.18994413,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.18994413,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.006981383,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.18994413,"width":0.0009973404,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.026928192,"top":0.18994413,"width":0.0063164895,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.08676862,"top":0.18994413,"width":0.0039893617,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.014295213,"top":0.20430966,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.20430966,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"bounds":{"left":0.025930852,"top":0.20430966,"width":0.00930851,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.20510775,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":4,"bounds":{"left":0.02825798,"top":0.20510775,"width":0.006981383,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.21867518,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"bounds":{"left":0.025930852,"top":0.21867518,"width":0.015957447,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.21947326,"width":0.0013297872,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.026928192,"top":0.21947326,"width":0.014960106,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.23383878,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.029920213,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.23383878,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":16,"bounds":{"left":0.027925532,"top":0.23383878,"width":0.027925532,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.2482043,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"bounds":{"left":0.025930852,"top":0.2482043,"width":0.01761968,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.2490024,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":9,"bounds":{"left":0.027925532,"top":0.2490024,"width":0.015625,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.26256984,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"bounds":{"left":0.025930852,"top":0.26256984,"width":0.025265958,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.26336792,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":13,"bounds":{"left":0.027925532,"top":0.26336792,"width":0.023603724,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.26336792,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.27773345,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.046210106,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.27773345,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":27,"bounds":{"left":0.027925532,"top":0.27773345,"width":0.04454787,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.27773345,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.29209897,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"bounds":{"left":0.025930852,"top":0.29209897,"width":0.01462766,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.29289705,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":8,"bounds":{"left":0.02825798,"top":0.29289705,"width":0.012300532,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3064645,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"bounds":{"left":0.025930852,"top":0.3064645,"width":0.023271276,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.30726257,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.30726257,"width":0.021276595,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3216281,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.021941489,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3216281,"width":0.0023271276,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.02825798,"top":0.3216281,"width":0.019614361,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.33599362,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"bounds":{"left":0.025930852,"top":0.33599362,"width":0.04488032,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.3367917,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":24,"bounds":{"left":0.027925532,"top":0.3367917,"width":0.04288564,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.3367917,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.35035914,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"bounds":{"left":0.025930852,"top":0.35035914,"width":0.042220745,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.35115722,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":22,"bounds":{"left":0.027925532,"top":0.35115722,"width":0.04055851,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.35115722,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.36552274,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.04055851,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.36552274,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":21,"bounds":{"left":0.027925532,"top":0.36552274,"width":0.03856383,"height":0.011173184}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.36552274,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.37988827,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"bounds":{"left":0.025930852,"top":0.37988827,"width":0.04920213,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.38068634,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":25,"bounds":{"left":0.027925532,"top":0.38068634,"width":0.047539894,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"bounds":{"left":0.087765954,"top":0.38068634,"width":0.0026595744,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.3942538,"width":0.0039893617,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"bounds":{"left":0.025930852,"top":0.3942538,"width":0.03357713,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.39505187,"width":0.0019946808,"height":0.0103751}},{"char_start":1,"char_count":17,"bounds":{"left":0.027925532,"top":0.39505187,"width":0.03158245,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"bounds":{"left":0.087101065,"top":0.39505187,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.019614361,"top":0.4094174,"width":0.0039893617,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.023936171,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.025930852,"top":0.4094174,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":12,"bounds":{"left":0.027925532,"top":0.4094174,"width":0.022273935,"height":0.011173184}}],"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"bounds":{"left":0.011635638,"top":0.95530725,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.95690346,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"bounds":{"left":0.016954787,"top":0.95530725,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"bounds":{"left":0.016954787,"top":0.9577015,"width":0.011635638,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9584996,"width":0.0026595744,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.019946808,"top":0.9584996,"width":0.008976064,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"bounds":{"left":0.011635638,"top":0.9696728,"width":0.0831117,"height":0.015163607},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.011968086,"top":0.97206706,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"bounds":{"left":0.016954787,"top":0.97047085,"width":0.013630319,"height":0.014365523},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"bounds":{"left":0.016954787,"top":0.9728651,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.017287234,"top":0.9728651,"width":0.0023271276,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.019281914,"top":0.9728651,"width":0.011635638,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"bounds":{"left":0.0016622341,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.0039893617,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"bounds":{"left":0.00831117,"top":0.98723066,"width":0.015292553,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.008643617,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":7,"bounds":{"left":0.009640957,"top":0.98723066,"width":0.012300532,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"bounds":{"left":0.027260639,"top":0.9848364,"width":0.019281914,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.027925532,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"bounds":{"left":0.032247342,"top":0.98723066,"width":0.013630319,"height":0.009577015},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.032579787,"top":0.98723066,"width":0.0009973404,"height":0.009577015}},{"char_start":1,"char_count":6,"bounds":{"left":0.03357713,"top":0.98723066,"width":0.010970744,"height":0.009577015}}],"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"bounds":{"left":0.04654255,"top":0.9848364,"width":0.0063164895,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"bounds":{"left":0.054853722,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.05618351,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.06050532,"top":0.98723066,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.064494684,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.069148935,"top":0.98723066,"width":0.0029920214,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"bounds":{"left":0.07513298,"top":0.9848364,"width":0.010305851,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.07646277,"top":0.98643255,"width":0.004654255,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.080784574,"top":0.98723066,"width":0.0033244682,"height":0.009577015},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"bounds":{"left":0.99102396,"top":0.9848364,"width":0.008976042,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"bounds":{"left":0.9567819,"top":0.9848364,"width":0.03357713,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"bounds":{"left":0.9421542,"top":0.9848364,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"bounds":{"left":0.91988033,"top":0.9848364,"width":0.020611702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"bounds":{"left":0.9115692,"top":0.9848364,"width":0.0066489363,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"bounds":{"left":0.8969415,"top":0.9848364,"width":0.013297873,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"bounds":{"left":0.87699467,"top":0.9848364,"width":0.01861702,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"bounds":{"left":0.85139626,"top":0.9848364,"width":0.024268618,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"bounds":{"left":0.8061835,"top":0.9848364,"width":0.04454787,"height":0.014365523},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"bounds":{"left":0.76163566,"top":0.05347167,"width":0.034574468,"height":0.011173184},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.76163566,"top":0.054269753,"width":0.0023271276,"height":0.0103751}},{"char_start":1,"char_count":19,"bounds":{"left":0.76396275,"top":0.054269753,"width":0.032247342,"height":0.0103751}}],"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"20m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.23238032,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"bounds":{"left":0.79388297,"top":0.07102953,"width":0.012300532,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.0013297872,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.08444149,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.07114362,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.004654255,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.22539894,"height":0.0007980846},"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.09707447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.21875,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.015625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"bounds":{"left":0.9640958,"top":0.07102953,"width":0.027925532,"height":0.0007980846},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"bounds":{"left":0.96642286,"top":0.07102953,"width":0.01662234,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.09208777,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.013630319,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78457445,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"bounds":{"left":0.7898936,"top":0.07102953,"width":0.0066489363,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"bounds":{"left":0.7965425,"top":0.07102953,"width":0.018284574,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"bounds":{"left":0.81449467,"top":0.07102953,"width":0.03656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"bounds":{"left":0.8287899,"top":0.07102953,"width":0.058843084,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.03856383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"bounds":{"left":0.8194814,"top":0.07102953,"width":0.09674202,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.044215426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"bounds":{"left":0.82513297,"top":0.07102953,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.010638298,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.78125,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.039228722,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"bounds":{"left":0.82579786,"top":0.07102953,"width":0.029920213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"bounds":{"left":0.85538566,"top":0.07102953,"width":0.11502659,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.053523935,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"bounds":{"left":0.82413566,"top":0.07102953,"width":0.026928192,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.07712766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.05119681,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"bounds":{"left":0.8218085,"top":0.07102953,"width":0.14793883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.048204787,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"bounds":{"left":0.81914896,"top":0.07102953,"width":0.09042553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"bounds":{"left":0.8061835,"top":0.07102953,"width":0.07413564,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.043882977,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"bounds":{"left":0.81482714,"top":0.07102953,"width":0.0731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.036901597,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"bounds":{"left":0.8075133,"top":0.07102953,"width":0.08543883,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.12367021,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"bounds":{"left":0.7742686,"top":0.07102953,"width":0.032247342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"bounds":{"left":0.8071808,"top":0.07102953,"width":0.077792555,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7649601,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76795214,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.7709442,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7799202,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.12965426,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.7815825,"top":0.07102953,"width":0.0009973404,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"bounds":{"left":0.7825798,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"bounds":{"left":0.76894945,"top":0.07102953,"width":0.010305851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.77892286,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"bounds":{"left":0.7809175,"top":0.07102953,"width":0.0043218085,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.7849069,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"bounds":{"left":0.7869016,"top":0.07102953,"width":0.046210106,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.7652925,"top":0.07102953,"width":0.0033244682,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.7669548,"top":0.07102953,"width":0.008643617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.049867023,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.047872342,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.97539896,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"bounds":{"left":0.9880319,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.0625,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.0076462766,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.7765958,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.056848403,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.015957447,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0029920214,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.76861703,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"bounds":{"left":0.77160907,"top":0.07102953,"width":0.008976064,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"bounds":{"left":0.7805851,"top":0.07102953,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.0987367,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"bounds":{"left":0.76662236,"top":0.07102953,"width":0.0016622341,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"bounds":{"left":0.7712766,"top":0.07102953,"width":0.087101065,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"bounds":{"left":0.76761967,"top":0.07102953,"width":0.00831117,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"bounds":{"left":0.76329786,"top":0.07102953,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"bounds":{"left":0.77859044,"top":0.07102953,"width":0.00930851,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.765625,"top":0.07102953,"width":0.003656915,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"bounds":{"left":0.77227396,"top":0.07102953,"width":0.039893616,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"bounds":{"left":0.9730718,"top":0.07102953,"width":0.005984043,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"bounds":{"left":0.98337764,"top":0.07102953,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"bounds":{"left":0.9857048,"top":0.07102953,"width":0.0063164895,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.765625,"top":0.07102953,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"bounds":{"left":0.7692819,"top":0.07102953,"width":0.023936171,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"bounds":{"left":0.7932181,"top":0.07102953,"width":0.0019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
-8296519705273691261
|
-6909844555220407717
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=...
|
31438
|
NULL
|
NULL
|
NULL
|
|
31439
|
1229
|
52
|
2026-05-13T08:40:42.359205+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778661642359_m1.jpg...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_db.sh — Un screenpipe [SSH: nas] — screenpipe_sync_db.sh — Untracked...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⌥⌘E)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⇧⌘G) - 19 pending changes","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"19","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Codemaps","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DeepWiki","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Run and Debug","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X)","depth":18,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer","depth":17,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Explorer","depth":18,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: nas]","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: nas]","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"screenpipe [SSH: nas]","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"logs","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":".gitignore","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"app_settings.json","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db-bak","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"archive.db.bak-pre-installid","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-shm","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_fts_migrate.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync copy.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_old.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_updated.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"U","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"M","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe.db","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Outline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Outline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Timeline","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Timeline","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"remote SSH: nas","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"SSH: nas","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - master*, Checkout Branch/Tag...","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"master*","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"screenpipe (Git) - Synchronize Changes","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"No Problems","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Forwarded Ports: 41257, 36613, 33153, 45375","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Windsurf - Settings","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Teams, Daily: 0% quota used · Weekly: 68% quota used","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Shell Script","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"LF","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"UTF-8","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Spaces: 2","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ln 51, Col 25","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Info: Setting up SSH Host (details): Creating local forwarding server...","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clear","depth":12,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Refactor Sync Script","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"15h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2h","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"20m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1m","depth":20,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show More","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Created Todo List","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7 tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Refactor main screenpipe_sync.sh to use modules","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Test backward compatibility of main script","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXHeading","text":"Refactor screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"heading"},{"role":"AXStaticText","text":"Refactor screenpipe_sync.sh into modular components","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"View Plan","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Implement⌘⏎","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Implement","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘⏎","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"I've created the refactoring plan. The approach will:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lib","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"directory","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"with three modules:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- logging, timing, SQLite helpers","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all DB operations (tables, indexes, sync, FTS, verify)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- data folder and log copying","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Keep","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync.sh","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"as orchestrator","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- maintains exact same CLI interface for backward compatibility","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Make modules dual-purpose","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each can be:","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sourced by the main script (primary use)","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Executed standalone for testing/debugging","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Configuration stays in main","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- all config variables remain in the main script, passed to modules via environment","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"This gives you:","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Independent modification","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- change DB logic without touching file operations","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Standalone testing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- test just the DB sync for a specific date","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Backward compatibility","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- existing cron jobs and aliases still work","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Easier maintenance","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"- each module is ~100-150 lines instead of 420","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Does this plan look good? Should I proceed with the implementation?","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Feedback submitted","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Began implementing","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"refactor-screenpipe-sync-modular-6b711a.md","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create refactoring plan to split screenpipe_sync.sh into modular components","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Command","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"mkdir","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"-p","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/lib","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Create lib/ directory structure","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_helpers.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"79","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" step(msg)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" run_sqlite_heredoc(label, sql)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\" check(label, got, expected)\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract helper functions to lib/screenpipe_sync_helpers.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thought","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"for 1s","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_db.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"298","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$(date","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+%s","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":") - SCRIPT_START ))","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"\"DB sync complete for","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$TARGET_DATE","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"in $((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))m$((","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"%","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"))s\"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fi","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tasks","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"done","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract DB operations to lib/screenpipe_sync_db.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Extract file operations to lib/screenpipe_sync_files.sh","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"more","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Thoughts","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe_sync_files.sh","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"new","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"100","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"TOTAL_ELAPSED","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":24,"on_screen":true,"role_description":"text"}]...
|
-8088488094756991947
|
-2298228905268762045
|
click
|
accessibility
|
NULL
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 19 pending changes
19
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
lib
screenpipe_sync_db.sh
U
screenpipe_sync_files.sh
U
screenpipe_sync_helpers.sh
U
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync copy.sh
U
screenpipe_sync_old.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
M
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257, 36613, 33153, 45375
4
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 51, Col 25
Screen Reader Optimized
Info: Setting up SSH Host (details): Creating local forwarding server...
Clear
Refactor Sync Script
15h
2h
20m
1m
1m
Show More
Thought
for 1s
Created Todo List
7 tasks
1
Create refactoring plan to split screenpipe_sync.sh into modular components
Create lib/ directory structure
Extract helper functions to lib/screenpipe_sync_helpers.sh
Extract DB operations to lib/screenpipe_sync_db.sh
Extract file operations to lib/screenpipe_sync_files.sh
Refactor main screenpipe_sync.sh to use modules
Test backward compatibility of main script
Thought
for 1s
refactor-screenpipe-sync-modular-6b711a.md
Refactor screenpipe_sync.sh into modular components
Refactor screenpipe_sync.sh into modular components
Split the monolithic 420-line screenpipe_sync.sh script into modular components in a lib/ directory for easier maintenance and independent execution.
View Plan
Implement⌘⏎
Implement
⌘⏎
Thought
for 1s
I've created the refactoring plan. The approach will:
Create
lib
directory
with three modules:
screenpipe_sync_helpers.sh
- logging, timing, SQLite helpers
screenpipe_sync_db.sh
- all DB operations (tables, indexes, sync, FTS, verify)
screenpipe_sync_files.sh
- data folder and log copying
Keep
screenpipe_sync.sh
as orchestrator
- maintains exact same CLI interface for backward compatibility
Make modules dual-purpose
- each can be:
Sourced by the main script (primary use)
Executed standalone for testing/debugging
Configuration stays in main
- all config variables remain in the main script, passed to modules via environment
This gives you:
Independent modification
- change DB logic without touching file operations
Standalone testing
- test just the DB sync for a specific date
Backward compatibility
- existing cron jobs and aliases still work
Easier maintenance
- each module is ~100-150 lines instead of 420
Does this plan look good? Should I proceed with the implementation?
Feedback submitted
Began implementing
refactor-screenpipe-sync-modular-6b711a.md
Thought
for 1s
1
/
7
tasks
done
Create refactoring plan to split screenpipe_sync.sh into modular components
2
Create lib/ directory structure
5
more
Thoughts
Command
mkdir
mkdir
-p
/volume1/screenpipe/lib
Thoughts
2
/
7
tasks
done
1
more
Create lib/ directory structure
3
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
more
Thoughts
screenpipe_sync_helpers.sh
new
+
79
echo
" step(msg)"
echo
" run_sqlite_heredoc(label, sql)"
echo
" check(label, got, expected)"
fi
Thoughts
3
/
7
tasks
done
2
more
Extract helper functions to lib/screenpipe_sync_helpers.sh
4
Extract DB operations to lib/screenpipe_sync_db.sh
3
more
Thought
for 1s
screenpipe_sync_db.sh
new
+
298
TOTAL_ELAPSED
=
$((
$(date
+%s
) - SCRIPT_START ))
echo
""
echo
"DB sync complete for
$TARGET_DATE
in $((
TOTAL_ELAPSED
/
60
))m$((
TOTAL_ELAPSED
%
60
))s"
fi
Thoughts
4
/
7
tasks
done
3
more
Extract DB operations to lib/screenpipe_sync_db.sh
5
Extract file operations to lib/screenpipe_sync_files.sh
2
more
Thoughts
screenpipe_sync_files.sh
new
+
100
TOTAL_ELAPSED
=...
|
NULL
|
NULL
|
NULL
|
NULL
|