|
1492
|
33
|
14
|
2026-04-11T17:34:32.450706+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928872450_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:32-zsh181DOCKER• ₴812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
4800930830280903835
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:32-zsh181DOCKER• ₴812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
1491
|
|
1493
|
33
|
15
|
2026-04-11T17:34:34.621015+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928874621_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:34-zsh181DOCKER• ₴812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
7217691869824402556
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:34-zsh181DOCKER• ₴812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
|
1495
|
33
|
17
|
2026-04-11T17:34:40.963410+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928880963_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:40-zsh181DOCKER• ₴812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960М/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
-1140284862814937209
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:40-zsh181DOCKER• ₴812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960М/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
|
1497
|
33
|
19
|
2026-04-11T17:34:45.019835+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928885019_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:44-zsh181DOCKERO 8812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
-6889244409829837447
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:44-zsh181DOCKERO 8812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
|
1498
|
33
|
20
|
2026-04-11T17:34:46.933809+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928886933_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:46-zsh181DOCKERO 8812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
NULL
|
3968159065657669842
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp(ahl100% 1Sat 11 Apr 20:34:46-zsh181DOCKERO 8812026-04-11T20:26:05.384798Z2026-04-11T20:26:05.389960Z2026-04-11T20:26:05.528107Z2026-04-11T20:26:05.683177Z2026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11720:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• ₴5|-zsh886-zshO 87-zshINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030INFOscreenpipe_connect::mdns:INFOmdns: advertisingscreenpipeon port 3030screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 883frame entries, coverage from 2026-04-10 17:26:05.378561 UTCINFOscreenpipe_engine::vision_manager::manager:Starting visionrecordingfor monitor1 (1440x900)INFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitor watcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)INFOsck_rs::stream_manager: persistent SCKstream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8|du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1 lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M126M/Users/lukas/.screenpipe/data/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S U...
|
1497
|
|
1500
|
33
|
22
|
2026-04-11T17:35:05.491922+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928905491_m1.jpg...
|
Code
|
Build screenpipe data UI… — screenpipe [SSH: 100.7 Build screenpipe data UI… — screenpipe [SSH: 100.73.206.126]...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
__init__.py
activity.py
audio.py
elements.py
interactions.py
ocr.py
report.py
summary.py
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
#!/bin/bash • Untitled-1, Editor Group 1
report.py, preview, Editor Group 1
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
Build screenpipe data UI…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Update is ready, click to restart.
Update is ready, click to restart.
Notifications
Sign In
Sign In
Screen Reader Optimized
Diff editor
Build screenpipe data UI and summary app
Session history
New session
Message actions
lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.
Thinking
Thinking
Let me explore the screenpipe directory to understand what we're working with.
Bash
List screenpipe directory contents
IN
ls /volume1/screenpipe/
Copy code to clipboard
OUT
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
List data and pipes directories
IN
ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/
Copy code to clipboard
OUT
2026-04-09
2026-04-11
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Bash
List tables in screenpipe SQLite database
IN
sqlite3 /volume1/screenpipe/db.sqlite ".tables"
Copy code to clipboard
OUT
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
[rerun: b3]
Bash
Get ocr_text table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
Copy code to clipboard
OUT
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
[rerun: b4]
Bash
Get audio_transcriptions table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(audio_transcriptions);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|audio_chunk_id|INTEGER|1||0
2|offset_index|INTEGER|1||0
3|timestamp|TIMESTAMP|1||0
4|transcription|TEXT|1||0
5|device|TEXT|1|''|0
6|is_input_device|BOOLEAN|1|TRUE|0
7|speaker_id|INTEGER|0||0
8|transcription_engine|TEXT|1|'Whisper'|0
9|start_time|REAL|0||0
10|end_time|REAL|0||0
11|text_length|INTEGER|0||0
12|sync_id|TEXT|0||0
13|synced_at|DATETIME|0||0
[rerun: b5]
Bash
Get frames, ui_events, video_chunks schemas
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|video_chunk_id|INTEGER|0|NULL|0
2|offset_index|INTEGER|1|0|0
3|timestamp|TIMESTAMP|1||0
4|name|TEXT|0||0
5|app_name|TEXT|0|NULL|0
6|window_name|TEXT|0|NULL|0
7|focused|BOOLEAN|0|NULL|0
8|browser_url|TEXT|0|NULL|0
9|device_name|TEXT|1|''|0
10|sync_id|TEXT|0||0
11|machine_id|TEXT|0||0
12|synced_at|DATETIME|0||0
13|snapshot_path|TEXT|0|NULL|0
14|accessibility_text|TEXT|0|NULL|0
15|accessibility_tree_json|TEXT|0|NULL|0
16|content_hash|INTEGER|0|NULL|0
17|simhash|INTEGER|0|NULL|0
18|capture_trigger|TEXT|0|NULL|0
19|text_source|TEXT|0|NULL|0
20|cloud_blob_id|TEXT|0|NULL|0
21|full_text|TEXT|0|NULL|0
22|elements_ref_frame_id|INTEGER|0|NULL|0
0|id|INTEGER|0||1
1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0
2|session_id|TEXT|0||0
3|relative_ms|INTEGER|1|0|0
4|event_type|TEXT|1||0
5|x|INTEGER|0||0
6|y|INTEGER|0||0
7|delta_x|INTEGER|0||0
8|delta_y|INTEGER|0||0
9|button|INTEGER|0||0
10|click_count|INTEGER|0||0
11|key_code|INTEGER|0||0
12|modifiers|INTEGER|0||0
13|text_content|TEXT|0||0
14|text_length|INTEGER|0||0
15|app_name|TEXT|0||0
16|app_pid|INTEGER|0||0
17|window_title|TEXT|0||0
18|browser_url|TEXT|0||0
19|element_role|TEXT|0||0
20|element_name|TEXT|0||0
21|element_value|TEXT|0||0
22|element_description|TEXT|0||0
23|element_automation_id|TEXT|0||0
24|element_bounds|TEXT|0||0
25|frame_id|INTEGER|0||0
26|sync_id|TEXT|0||0
27|machine_id|TEXT|0||0
28|synced_at|DATETIME|0||0
0|id|INTEGER|0||1
1|file_path|TEXT|1||0
2|device_name|TEXT|1|''|0
3|sync_id|TEXT|0||0
4|machine_id|TEXT|0||0
5|synced_at|DATETIME|0||0
6|fps|REAL|1|0.5|0
7|cloud_blob_id|TEXT|0|NULL|0
[rerun: b6]
Bash
Check data counts and date ranges
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;" 2>/dev/null
Copy code to clipboard
OUT
1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00
3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00
666
[rerun: b7]
Bash
Explore existing pipes for patterns
IN
ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50
Copy code to clipboard
OUT
pipe.md
[rerun: b8]
Bash
Read day-recap pipe documentation
IN
cat /volume1/screenpipe/pipes/day-recap/pipe.md
Copy code to clipboard
OUT
---
schedule: manual
enabled: true
template: true
title: Day Recap
description: "Today's accomplishments, key moments, and unfinished work"
icon: "📋"
featured: true
---
Analyze my screen and audio recordings from today (last 16 hours only).
Read screenpipe skill first.
Use this exact format:
## Summary
One sentence: what I mainly did today.
## Accomplishments
- Top 3 things I finished, with timestamps (e.g. "2:30 PM")
- Name specific apps, files, or projects
## Key Moments
- Important things I saw, said, or heard — with timestamps
## Unfinished Work
- What I should continue tomorrow — name the app/file/task
## Patterns
- Apps I used most, topics that came up repeatedly
Only report what you can verify from the data. End with: "**Next step:** [most important thing to continue]"
[rerun: b9]
Bash
Sample app names from frames
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;"
Copy code to clipboard
OUT
Safari
Activity Monitor
Dia
iTerm2
Control Centre
UserNotificationCenter
Finder
Claude
Slack
Firefox
Raycast
NetAuthAgent
QuickTime Player
[rerun: b10]
Bash
Sample joined frame+ocr data for today
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;"
Copy code to clipboard
OUT
2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE
2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER
2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p
2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p
2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi
[rerun: b11]
Bash
Sample recent audio transcriptions
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;"
Copy code to clipboard
OUT
2026-04-09T17:02:52+00:00|.|System Audio
2026-04-09T16:59:22+00:00|Class is technically...|System Audio
2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio
[rerun: b12]
Thinking
Thinking
Good data to work with. Here's what we have:
frames
+
ocr_text
: Screen captures with OCR text, app name, window name (1135 frames so far)
audio_transcriptions
: Voice/system audio transcripts
ui_events
: Mouse/keyboard events with app context
video_chunks
: Raw video files
Before I start building, a few quick questions:
Tech stack
— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)
AI summaries
— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?
What summaries matter most?
Day recap (what apps/windows you used, key text seen)
App time breakdown (time per app)
Audio/conversation recap
Custom searchable timeline
Here's the architecture I'm thinking:
Copy code to clipboard
/volume1/screenpipe/app/
├── main.py # FastAPI web UI
├── cli.py # Click CLI: `python cli.py day-recap`
├── db.py # Read-only queries against db.sqlite
├── consumers/
│ ├── activity.py # App usage, time per window
│ ├── ocr.py # OCR text aggregation + search
│ ├── audio.py # Transcription queries
│ └── summary.py # AI summary builder
└── static/
└── index.html # Single-page UI
CLI commands would look like:
Copy code to clipboard
python cli.py day-recap # EOD summary
python cli.py activity --date today # App time breakdown
python cli.py search "docker" # Search OCR/audio text
python cli.py serve # Launch web UI
Does this direction work? Any preferences on the stack or which summaries to prioritize?
Message actions
seesm ok
Thinking
Thinking
Bash
Check Python and available packages
IN
python3 --version && pip3 list 2>/dev/null | grep -E "fastapi|uvicorn|click|anthropic|httpx|jinja"
Copy code to clipboard...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⇧⌘E) - 1 unsaved file","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⌃⇧G)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Run and Debug (⇧⌘D)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X) - 2 require update, 1 requires restart","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Claude Code","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Containers","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"EXPLORER","depth":17,"role_description":"heading"},{"role":"AXStaticText","text":"EXPLORER","depth":18,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"SCREENPIPE [SSH: 100.73.206.126]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"consumers","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"__init__.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"activity.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"audio.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"elements.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"interactions.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"ocr.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"report.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"summary.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"static","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":".env","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"cli.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"docker-compose.yml","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"main.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"requirements.txt","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"OUTLINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"OUTLINE","depth":23,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"TIMELINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"TIMELINE","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"pipe.md, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"#!/bin/bash • Untitled-1, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"report.py, preview, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXTextArea","text":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","depth":28,"value":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","role_description":"editor","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","depth":29,"role_description":"text"},{"role":"AXRadioButton","text":"Build screenpipe data UI…, Editor Group 2","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Problems (⇧⌘M)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PROBLEMS","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Output (⇧⌘U)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUTPUT","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Debug Console (⇧⌘Y)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DEBUG CONSOLE","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Terminal (⌃`)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"TERMINAL","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Ports","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PORTS","depth":24,"role_description":"text"},{"role":"AXButton","text":"remote SSH: 100.73.206.126","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"SSH: 100.73.206.126","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Problems","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Ports Forwarded","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"Update is ready, click to restart.","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Update is ready, click to restart.","depth":17,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sign In","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Sign In","depth":17,"role_description":"text"},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Diff editor","depth":12,"role_description":"text"},{"role":"AXButton","text":"Build screenpipe data UI and summary app","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Session history","depth":18,"help_text":"Session history","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New session","depth":18,"help_text":"New session","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Let me explore the screenpipe directory to understand what we're working with.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List screenpipe directory contents","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"data\ndb.sqlite\npipes\n#recycle\n[rerun: b1]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List data and pipes directories","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-09\n2026-04-11\nai-habits\nday-recap\nmeeting-summary\nstandup-update\ntime-breakdown\nvideo-export\n[rerun: b2]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List tables in screenpipe SQLite database","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \".tables\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx\n[rerun: b3]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get ocr_text table schema","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(ocr_text);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|frame_id|INTEGER|1||0\n1|text|TEXT|1||0\n2|text_json|TEXT|0||0\n3|app_name|TEXT|1|''|0\n4|ocr_engine|TEXT|1|'unknown'|0\n5|window_name|TEXT|0||0\n6|focused|BOOLEAN|0|FALSE|0\n7|text_length|INTEGER|0||0\n8|sync_id|TEXT|0||0\n9|synced_at|DATETIME|0||0\n[rerun: b4]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get audio_transcriptions table schema","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(audio_transcriptions);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|id|INTEGER|0||1\n1|audio_chunk_id|INTEGER|1||0\n2|offset_index|INTEGER|1||0\n3|timestamp|TIMESTAMP|1||0\n4|transcription|TEXT|1||0\n5|device|TEXT|1|''|0\n6|is_input_device|BOOLEAN|1|TRUE|0\n7|speaker_id|INTEGER|0||0\n8|transcription_engine|TEXT|1|'Whisper'|0\n9|start_time|REAL|0||0\n10|end_time|REAL|0||0\n11|text_length|INTEGER|0||0\n12|sync_id|TEXT|0||0\n13|synced_at|DATETIME|0||0\n[rerun: b5]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get frames, ui_events, video_chunks schemas","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|id|INTEGER|0||1\n1|video_chunk_id|INTEGER|0|NULL|0\n2|offset_index|INTEGER|1|0|0\n3|timestamp|TIMESTAMP|1||0\n4|name|TEXT|0||0\n5|app_name|TEXT|0|NULL|0\n6|window_name|TEXT|0|NULL|0\n7|focused|BOOLEAN|0|NULL|0\n8|browser_url|TEXT|0|NULL|0\n9|device_name|TEXT|1|''|0\n10|sync_id|TEXT|0||0\n11|machine_id|TEXT|0||0\n12|synced_at|DATETIME|0||0\n13|snapshot_path|TEXT|0|NULL|0\n14|accessibility_text|TEXT|0|NULL|0\n15|accessibility_tree_json|TEXT|0|NULL|0\n16|content_hash|INTEGER|0|NULL|0\n17|simhash|INTEGER|0|NULL|0\n18|capture_trigger|TEXT|0|NULL|0\n19|text_source|TEXT|0|NULL|0\n20|cloud_blob_id|TEXT|0|NULL|0\n21|full_text|TEXT|0|NULL|0\n22|elements_ref_frame_id|INTEGER|0|NULL|0\n0|id|INTEGER|0||1\n1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0\n2|session_id|TEXT|0||0\n3|relative_ms|INTEGER|1|0|0\n4|event_type|TEXT|1||0\n5|x|INTEGER|0||0\n6|y|INTEGER|0||0\n7|delta_x|INTEGER|0||0\n8|delta_y|INTEGER|0||0\n9|button|INTEGER|0||0\n10|click_count|INTEGER|0||0\n11|key_code|INTEGER|0||0\n12|modifiers|INTEGER|0||0\n13|text_content|TEXT|0||0\n14|text_length|INTEGER|0||0\n15|app_name|TEXT|0||0\n16|app_pid|INTEGER|0||0\n17|window_title|TEXT|0||0\n18|browser_url|TEXT|0||0\n19|element_role|TEXT|0||0\n20|element_name|TEXT|0||0\n21|element_value|TEXT|0||0\n22|element_description|TEXT|0||0\n23|element_automation_id|TEXT|0||0\n24|element_bounds|TEXT|0||0\n25|frame_id|INTEGER|0||0\n26|sync_id|TEXT|0||0\n27|machine_id|TEXT|0||0\n28|synced_at|DATETIME|0||0\n0|id|INTEGER|0||1\n1|file_path|TEXT|1||0\n2|device_name|TEXT|1|''|0\n3|sync_id|TEXT|0||0\n4|machine_id|TEXT|0||0\n5|synced_at|DATETIME|0||0\n6|fps|REAL|1|0.5|0\n7|cloud_blob_id|TEXT|0|NULL|0\n[rerun: b6]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check data counts and date ranges","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;\" 2>/dev/null\nsqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;\" 2>/dev/null\nsqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*) FROM ocr_text;\" 2>/dev/null","depth":25,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00\n3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00\n666\n[rerun: b7]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Explore existing pipes for patterns","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"pipe.md\n[rerun: b8]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Read day-recap pipe documentation","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"cat /volume1/screenpipe/pipes/day-recap/pipe.md","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"---\nschedule: manual\nenabled: true\ntemplate: true\ntitle: Day Recap\ndescription: \"Today's accomplishments, key moments, and unfinished work\"\nicon: \"📋\"\nfeatured: true\n---\n\nAnalyze my screen and audio recordings from today (last 16 hours only). \n\nRead screenpipe skill first.\n\nUse this exact format:\n\n## Summary\nOne sentence: what I mainly did today.\n\n## Accomplishments\n- Top 3 things I finished, with timestamps (e.g. \"2:30 PM\")\n- Name specific apps, files, or projects\n\n## Key Moments\n- Important things I saw, said, or heard — with timestamps\n\n## Unfinished Work\n- What I should continue tomorrow — name the app/file/task\n\n## Patterns\n- Apps I used most, topics that came up repeatedly\n\nOnly report what you can verify from the data. End with: \"**Next step:** [most important thing to continue]\"\n[rerun: b9]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample app names from frames","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Safari\nActivity Monitor\nDia\niTerm2\nControl Centre\nUserNotificationCenter\nFinder\nClaude\nSlack\nFirefox\nRaycast\nNetAuthAgent\nQuickTime Player\n[rerun: b10]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample joined frame+ocr data for today","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE\n2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER\n2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p\n2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p\n2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi\n[rerun: b11]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample recent audio transcriptions","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-09T17:02:52+00:00|.|System Audio\n2026-04-09T16:59:22+00:00|Class is technically...|System Audio\n2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio\n[rerun: b12]","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Good data to work with. Here's what we have:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frames","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ocr_text","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Screen captures with OCR text, app name, window name (1135 frames so far)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Voice/system audio transcripts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ui_events","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Mouse/keyboard events with app context","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"video_chunks","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Raw video files","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Before I start building, a few quick questions:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Tech stack","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"AI summaries","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"What summaries matter most?","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Day recap (what apps/windows you used, key text seen)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"App time breakdown (time per app)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Audio/conversation recap","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Custom searchable timeline","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Here's the architecture I'm thinking:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/volume1/screenpipe/app/\n├── main.py # FastAPI web UI\n├── cli.py # Click CLI: `python cli.py day-recap`\n├── db.py # Read-only queries against db.sqlite\n├── consumers/\n│ ├── activity.py # App usage, time per window\n│ ├── ocr.py # OCR text aggregation + search\n│ ├── audio.py # Transcription queries\n│ └── summary.py # AI summary builder\n└── static/\n └── index.html # Single-page UI","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"CLI commands would look like:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"python cli.py day-recap # EOD summary\npython cli.py activity --date today # App time breakdown\npython cli.py search \"docker\" # Search OCR/audio text\npython cli.py serve # Launch web UI","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Does this direction work? Any preferences on the stack or which summaries to prioritize?","depth":22,"role_description":"text"},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"seesm ok","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check Python and available packages","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"python3 --version && pip3 list 2>/dev/null | grep -E \"fastapi|uvicorn|click|anthropic|httpx|jinja\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8393704770092114008
|
-8790063097473529322
|
app_switch
|
accessibility
|
NULL
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
__init__.py
activity.py
audio.py
elements.py
interactions.py
ocr.py
report.py
summary.py
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
#!/bin/bash • Untitled-1, Editor Group 1
report.py, preview, Editor Group 1
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
Build screenpipe data UI…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Update is ready, click to restart.
Update is ready, click to restart.
Notifications
Sign In
Sign In
Screen Reader Optimized
Diff editor
Build screenpipe data UI and summary app
Session history
New session
Message actions
lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.
Thinking
Thinking
Let me explore the screenpipe directory to understand what we're working with.
Bash
List screenpipe directory contents
IN
ls /volume1/screenpipe/
Copy code to clipboard
OUT
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
List data and pipes directories
IN
ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/
Copy code to clipboard
OUT
2026-04-09
2026-04-11
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Bash
List tables in screenpipe SQLite database
IN
sqlite3 /volume1/screenpipe/db.sqlite ".tables"
Copy code to clipboard
OUT
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
[rerun: b3]
Bash
Get ocr_text table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
Copy code to clipboard
OUT
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
[rerun: b4]
Bash
Get audio_transcriptions table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(audio_transcriptions);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|audio_chunk_id|INTEGER|1||0
2|offset_index|INTEGER|1||0
3|timestamp|TIMESTAMP|1||0
4|transcription|TEXT|1||0
5|device|TEXT|1|''|0
6|is_input_device|BOOLEAN|1|TRUE|0
7|speaker_id|INTEGER|0||0
8|transcription_engine|TEXT|1|'Whisper'|0
9|start_time|REAL|0||0
10|end_time|REAL|0||0
11|text_length|INTEGER|0||0
12|sync_id|TEXT|0||0
13|synced_at|DATETIME|0||0
[rerun: b5]
Bash
Get frames, ui_events, video_chunks schemas
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|video_chunk_id|INTEGER|0|NULL|0
2|offset_index|INTEGER|1|0|0
3|timestamp|TIMESTAMP|1||0
4|name|TEXT|0||0
5|app_name|TEXT|0|NULL|0
6|window_name|TEXT|0|NULL|0
7|focused|BOOLEAN|0|NULL|0
8|browser_url|TEXT|0|NULL|0
9|device_name|TEXT|1|''|0
10|sync_id|TEXT|0||0
11|machine_id|TEXT|0||0
12|synced_at|DATETIME|0||0
13|snapshot_path|TEXT|0|NULL|0
14|accessibility_text|TEXT|0|NULL|0
15|accessibility_tree_json|TEXT|0|NULL|0
16|content_hash|INTEGER|0|NULL|0
17|simhash|INTEGER|0|NULL|0
18|capture_trigger|TEXT|0|NULL|0
19|text_source|TEXT|0|NULL|0
20|cloud_blob_id|TEXT|0|NULL|0
21|full_text|TEXT|0|NULL|0
22|elements_ref_frame_id|INTEGER|0|NULL|0
0|id|INTEGER|0||1
1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0
2|session_id|TEXT|0||0
3|relative_ms|INTEGER|1|0|0
4|event_type|TEXT|1||0
5|x|INTEGER|0||0
6|y|INTEGER|0||0
7|delta_x|INTEGER|0||0
8|delta_y|INTEGER|0||0
9|button|INTEGER|0||0
10|click_count|INTEGER|0||0
11|key_code|INTEGER|0||0
12|modifiers|INTEGER|0||0
13|text_content|TEXT|0||0
14|text_length|INTEGER|0||0
15|app_name|TEXT|0||0
16|app_pid|INTEGER|0||0
17|window_title|TEXT|0||0
18|browser_url|TEXT|0||0
19|element_role|TEXT|0||0
20|element_name|TEXT|0||0
21|element_value|TEXT|0||0
22|element_description|TEXT|0||0
23|element_automation_id|TEXT|0||0
24|element_bounds|TEXT|0||0
25|frame_id|INTEGER|0||0
26|sync_id|TEXT|0||0
27|machine_id|TEXT|0||0
28|synced_at|DATETIME|0||0
0|id|INTEGER|0||1
1|file_path|TEXT|1||0
2|device_name|TEXT|1|''|0
3|sync_id|TEXT|0||0
4|machine_id|TEXT|0||0
5|synced_at|DATETIME|0||0
6|fps|REAL|1|0.5|0
7|cloud_blob_id|TEXT|0|NULL|0
[rerun: b6]
Bash
Check data counts and date ranges
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;" 2>/dev/null
Copy code to clipboard
OUT
1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00
3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00
666
[rerun: b7]
Bash
Explore existing pipes for patterns
IN
ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50
Copy code to clipboard
OUT
pipe.md
[rerun: b8]
Bash
Read day-recap pipe documentation
IN
cat /volume1/screenpipe/pipes/day-recap/pipe.md
Copy code to clipboard
OUT
---
schedule: manual
enabled: true
template: true
title: Day Recap
description: "Today's accomplishments, key moments, and unfinished work"
icon: "📋"
featured: true
---
Analyze my screen and audio recordings from today (last 16 hours only).
Read screenpipe skill first.
Use this exact format:
## Summary
One sentence: what I mainly did today.
## Accomplishments
- Top 3 things I finished, with timestamps (e.g. "2:30 PM")
- Name specific apps, files, or projects
## Key Moments
- Important things I saw, said, or heard — with timestamps
## Unfinished Work
- What I should continue tomorrow — name the app/file/task
## Patterns
- Apps I used most, topics that came up repeatedly
Only report what you can verify from the data. End with: "**Next step:** [most important thing to continue]"
[rerun: b9]
Bash
Sample app names from frames
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;"
Copy code to clipboard
OUT
Safari
Activity Monitor
Dia
iTerm2
Control Centre
UserNotificationCenter
Finder
Claude
Slack
Firefox
Raycast
NetAuthAgent
QuickTime Player
[rerun: b10]
Bash
Sample joined frame+ocr data for today
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;"
Copy code to clipboard
OUT
2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE
2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER
2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p
2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p
2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi
[rerun: b11]
Bash
Sample recent audio transcriptions
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;"
Copy code to clipboard
OUT
2026-04-09T17:02:52+00:00|.|System Audio
2026-04-09T16:59:22+00:00|Class is technically...|System Audio
2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio
[rerun: b12]
Thinking
Thinking
Good data to work with. Here's what we have:
frames
+
ocr_text
: Screen captures with OCR text, app name, window name (1135 frames so far)
audio_transcriptions
: Voice/system audio transcripts
ui_events
: Mouse/keyboard events with app context
video_chunks
: Raw video files
Before I start building, a few quick questions:
Tech stack
— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)
AI summaries
— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?
What summaries matter most?
Day recap (what apps/windows you used, key text seen)
App time breakdown (time per app)
Audio/conversation recap
Custom searchable timeline
Here's the architecture I'm thinking:
Copy code to clipboard
/volume1/screenpipe/app/
├── main.py # FastAPI web UI
├── cli.py # Click CLI: `python cli.py day-recap`
├── db.py # Read-only queries against db.sqlite
├── consumers/
│ ├── activity.py # App usage, time per window
│ ├── ocr.py # OCR text aggregation + search
│ ├── audio.py # Transcription queries
│ └── summary.py # AI summary builder
└── static/
└── index.html # Single-page UI
CLI commands would look like:
Copy code to clipboard
python cli.py day-recap # EOD summary
python cli.py activity --date today # App time breakdown
python cli.py search "docker" # Search OCR/audio text
python cli.py serve # Launch web UI
Does this direction work? Any preferences on the stack or which summaries to prioritize?
Message actions
seesm ok
Thinking
Thinking
Bash
Check Python and available packages
IN
python3 --version && pip3 list 2>/dev/null | grep -E "fastapi|uvicorn|click|anthropic|httpx|jinja"
Copy code to clipboard...
|
NULL
|
|
1501
|
33
|
23
|
2026-04-11T17:35:06.080296+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928906080_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:35:05-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
6576754681547525819
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:35:05-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
1500
|
|
1502
|
33
|
24
|
2026-04-11T17:35:07.486391+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928907486_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:35:07-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
965371933278899675
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:35:07-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
|
1503
|
33
|
25
|
2026-04-11T17:35:37.992135+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928937992_m1.jpg...
|
Code
|
Build screenpipe data UI… — screenpipe [SSH: 100.7 Build screenpipe data UI… — screenpipe [SSH: 100.73.206.126]...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
__init__.py
activity.py
audio.py
elements.py
interactions.py
ocr.py
report.py
summary.py
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
#!/bin/bash • Untitled-1, Editor Group 1
report.py, preview, Editor Group 1
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
Build screenpipe data UI…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Update is ready, click to restart.
Update is ready, click to restart.
Notifications
Sign In
Sign In
Screen Reader Optimized
Diff editor
Build screenpipe data UI and summary app
Session history
New session
Message actions
lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.
Thinking
Thinking
Let me explore the screenpipe directory to understand what we're working with.
Bash
List screenpipe directory contents
IN
ls /volume1/screenpipe/
Copy code to clipboard
OUT
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
List data and pipes directories
IN
ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/
Copy code to clipboard
OUT
2026-04-09
2026-04-11
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Bash
List tables in screenpipe SQLite database
IN
sqlite3 /volume1/screenpipe/db.sqlite ".tables"
Copy code to clipboard
OUT
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
[rerun: b3]
Bash
Get ocr_text table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
Copy code to clipboard
OUT
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
[rerun: b4]
Bash
Get audio_transcriptions table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(audio_transcriptions);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|audio_chunk_id|INTEGER|1||0
2|offset_index|INTEGER|1||0
3|timestamp|TIMESTAMP|1||0
4|transcription|TEXT|1||0
5|device|TEXT|1|''|0
6|is_input_device|BOOLEAN|1|TRUE|0
7|speaker_id|INTEGER|0||0
8|transcription_engine|TEXT|1|'Whisper'|0
9|start_time|REAL|0||0
10|end_time|REAL|0||0
11|text_length|INTEGER|0||0
12|sync_id|TEXT|0||0
13|synced_at|DATETIME|0||0
[rerun: b5]
Bash
Get frames, ui_events, video_chunks schemas
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|video_chunk_id|INTEGER|0|NULL|0
2|offset_index|INTEGER|1|0|0
3|timestamp|TIMESTAMP|1||0
4|name|TEXT|0||0
5|app_name|TEXT|0|NULL|0
6|window_name|TEXT|0|NULL|0
7|focused|BOOLEAN|0|NULL|0
8|browser_url|TEXT|0|NULL|0
9|device_name|TEXT|1|''|0
10|sync_id|TEXT|0||0
11|machine_id|TEXT|0||0
12|synced_at|DATETIME|0||0
13|snapshot_path|TEXT|0|NULL|0
14|accessibility_text|TEXT|0|NULL|0
15|accessibility_tree_json|TEXT|0|NULL|0
16|content_hash|INTEGER|0|NULL|0
17|simhash|INTEGER|0|NULL|0
18|capture_trigger|TEXT|0|NULL|0
19|text_source|TEXT|0|NULL|0
20|cloud_blob_id|TEXT|0|NULL|0
21|full_text|TEXT|0|NULL|0
22|elements_ref_frame_id|INTEGER|0|NULL|0
0|id|INTEGER|0||1
1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0
2|session_id|TEXT|0||0
3|relative_ms|INTEGER|1|0|0
4|event_type|TEXT|1||0
5|x|INTEGER|0||0
6|y|INTEGER|0||0
7|delta_x|INTEGER|0||0
8|delta_y|INTEGER|0||0
9|button|INTEGER|0||0
10|click_count|INTEGER|0||0
11|key_code|INTEGER|0||0
12|modifiers|INTEGER|0||0
13|text_content|TEXT|0||0
14|text_length|INTEGER|0||0
15|app_name|TEXT|0||0
16|app_pid|INTEGER|0||0
17|window_title|TEXT|0||0
18|browser_url|TEXT|0||0
19|element_role|TEXT|0||0
20|element_name|TEXT|0||0
21|element_value|TEXT|0||0
22|element_description|TEXT|0||0
23|element_automation_id|TEXT|0||0
24|element_bounds|TEXT|0||0
25|frame_id|INTEGER|0||0
26|sync_id|TEXT|0||0
27|machine_id|TEXT|0||0
28|synced_at|DATETIME|0||0
0|id|INTEGER|0||1
1|file_path|TEXT|1||0
2|device_name|TEXT|1|''|0
3|sync_id|TEXT|0||0
4|machine_id|TEXT|0||0
5|synced_at|DATETIME|0||0
6|fps|REAL|1|0.5|0
7|cloud_blob_id|TEXT|0|NULL|0
[rerun: b6]
Bash
Check data counts and date ranges
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;" 2>/dev/null
Copy code to clipboard
OUT
1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00
3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00
666
[rerun: b7]
Bash
Explore existing pipes for patterns
IN
ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50
Copy code to clipboard
OUT
pipe.md
[rerun: b8]
Bash
Read day-recap pipe documentation
IN
cat /volume1/screenpipe/pipes/day-recap/pipe.md
Copy code to clipboard
OUT
---
schedule: manual
enabled: true
template: true
title: Day Recap
description: "Today's accomplishments, key moments, and unfinished work"
icon: "📋"
featured: true
---
Analyze my screen and audio recordings from today (last 16 hours only).
Read screenpipe skill first.
Use this exact format:
## Summary
One sentence: what I mainly did today.
## Accomplishments
- Top 3 things I finished, with timestamps (e.g. "2:30 PM")
- Name specific apps, files, or projects
## Key Moments
- Important things I saw, said, or heard — with timestamps
## Unfinished Work
- What I should continue tomorrow — name the app/file/task
## Patterns
- Apps I used most, topics that came up repeatedly
Only report what you can verify from the data. End with: "**Next step:** [most important thing to continue]"
[rerun: b9]
Bash
Sample app names from frames
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;"
Copy code to clipboard
OUT
Safari
Activity Monitor
Dia
iTerm2
Control Centre
UserNotificationCenter
Finder
Claude
Slack
Firefox
Raycast
NetAuthAgent
QuickTime Player
[rerun: b10]
Bash
Sample joined frame+ocr data for today
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;"
Copy code to clipboard
OUT
2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE
2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER
2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p
2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p
2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi
[rerun: b11]
Bash
Sample recent audio transcriptions
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;"
Copy code to clipboard
OUT
2026-04-09T17:02:52+00:00|.|System Audio
2026-04-09T16:59:22+00:00|Class is technically...|System Audio
2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio
[rerun: b12]
Thinking
Thinking
Good data to work with. Here's what we have:
frames
+
ocr_text
: Screen captures with OCR text, app name, window name (1135 frames so far)
audio_transcriptions
: Voice/system audio transcripts
ui_events
: Mouse/keyboard events with app context
video_chunks
: Raw video files
Before I start building, a few quick questions:
Tech stack
— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)
AI summaries
— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?
What summaries matter most?
Day recap (what apps/windows you used, key text seen)
App time breakdown (time per app)
Audio/conversation recap
Custom searchable timeline
Here's the architecture I'm thinking:
Copy code to clipboard
/volume1/screenpipe/app/
├── main.py # FastAPI web UI
├── cli.py # Click CLI: `python cli.py day-recap`
├── db.py # Read-only queries against db.sqlite
├── consumers/
│ ├── activity.py # App usage, time per window
│ ├── ocr.py # OCR text aggregation + search
│ ├── audio.py # Transcription queries
│ └── summary.py # AI summary builder
└── static/
└── index.html # Single-page UI
CLI commands would look like:
Copy code to clipboard
python cli.py day-recap # EOD summary
python cli.py activity --date today # App time breakdown
python cli.py search "docker" # Search OCR/audio text
python cli.py serve # Launch web UI
Does this direction work? Any preferences on the stack or which summaries to prioritize?
Message actions
seesm ok
Thinking
Thinking
Bash
Check Python and available packages
IN
python3 --version && pip3 list 2>/dev/null | grep -E "fastapi|uvicorn|click|anthropic|httpx|jinja"
Copy code to clipboard
OUT
Python 3.11.2
[rerun: b1]
Bash
Verify join works for today's data
IN
sqlite3 /volume1/screenpipe/db.sqlite "
SELECT f.timestamp, o.app_name, o.window_name, length(o.text) as txt_len
FROM frames f JOIN ocr_text o ON f.id = o.frame_id
WHERE DATE(f.timestamp) = '2026-04-11'
ORDER BY f.timestamp DESC LIMIT 3;
"
Copy code to clipboard
OUT
2026-04-11T12:54:42.597794+00:00|||2111
2026-04-11T12:54:41.915916+00:00|||2110
2026-04-11T12:54:39.912712+00:00|||2111
[rerun: b2]
Bash
Install required packages
IN
pip3 install fastapi uvicorn click anthropic python-dotenv 2>&1 | tail -5
Copy code to clipboard
OUT
/bin/bash: line 1: pip3: command not found
[rerun: b3]
Bash
Find pip
IN
which pip || which pip3 || python3 -m pip --version 2>/dev/null
Copy code to clipboard
OUT
Exit code 1
[rerun: b4]
Bash
Bootstrap pip then install packages
IN
python3 -m ensurepip --upgrade 2>&1 && python3 -m pip install fastapi uvicorn click anthropic python-dotenv 2>&1 | tail -10
Copy code to clipboard
OUT
Exit code 1
/usr/bin/python3: No module named ensurepip
[rerun: b5]
Bash
Install pip via apt
IN
apt-get install -y python3-pip python3-venv 2>&1 | tail -5
Copy code to clipboard
OUT
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
[rerun: b6]
Bash
Install pip with sudo
Reason:
lets make it in docker, not to install it in nas directly
IN
sudo apt-get install -y python3-pip python3-venv 2>&1 | tail -5
Copy code to clipboard
Good call. Let me check what Docker setup you already have and build a proper containerized app.
Bash
Check existing docker-compose for reference
IN
ls /volume2/docker/paperlessngx/ && cat /volume2/docker/paperlessngx/docker-compose.yml 2>/dev/null | head -30
Copy code to clipboard
OUT
consume
data
db
docker-compose.yml
export
mcp-server
media
redis
trash
services:
redis:
image: redis:8
command:
- /bin/sh
- -c
- redis-server --requirepass redispass
container_name: PaperlessNGX-REDIS
hostname: paper-redis
security_opt:
- no-new-privileges:true
read_only: true
user: 1000:10
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- /volume2/docker/paperlessngx/redis:/data:rw
environment:
TZ: Europe/Sofia
restart: always
db:
image: postgres:17
container_name: PaperlessNGX-DB
hostname: paper-db
mem_limit: 1g
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"]
[rerun: b7]
Bash
Check Docker availability
IN
docker --version && docker compose version 2>/dev/null
Copy code to clipboard
OUT
Docker version 26.1.0, build 9714adc
Docker Compose version v2.26.1
[rerun: b8]
Bash
Create app directory structure
IN
mkdir -p /volume1/screenpipe/app/consumers /volume1/screenpipe/app/static
Copy code to clipboard
OUT
[rerun: b9]
Now let me build everything. I'll create all the files:
Write
requirements.txt
requirements.txt
6 lines
fastapi==0.115.12
uvicorn[standard]==0.34.0
click==8.1.8
anthropic==0.49.0
python-dotenv==1.1.0
Write
Dockerfile
Dockerfile
13 lines
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "[IP_ADDRESS]", "--port", "8000"]
Write
db.py
db.py
28 lines
import sqlite3
from contextlib import contextmanager
from datetime import date, datetime, timedelta, timezone
from typing import Generator
DB_PATH = "/data/db.sqlite"
@contextmanager
def get_conn() -> Generator[sqlite3.Connection, None, None]:
conn = sqlite3.connect(f"file:{DB_PATH}?mode=ro", uri=True)
conn.row_factory = sqlite3.Row
try:
yield conn
finally:
conn.close()
def date_range(for_date: date) -> tuple[str, str]:
"""Return ISO timestamps for start/end of a given date (UTC)."""
start = datetime(for_date.year, for_date.month, for_date.day, tzinfo=timezone.utc)
end = start + timedelta(days=1)
return start.isoformat(), end.isoformat()
def today() -> date:
return datetime.now(timezone.utc).date()
Write
__init__.py
__init__.py
1 line
Write
activity.py
activity.py
123 lines
"""App usage and window focus time consumer."""
from datetime import date
from typing import Any
from db import get_conn, date_range, today as _today
def app_time(for_date: date | None = None) -> list[dict[str, Any]]:
"""Return minutes spent per app for a given date, sorted descending."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT
o.app_name,
COUNT(*) as frame_count,
-- each frame ~ 2s at 0.5fps; convert to minutes
ROUND(COUNT(*) * 2.0 / 60, 1) as minutes
FROM frames f
JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND o.app_name != ''
GROUP BY o.app_name
ORDER BY frame_count DESC
""",
(start, end),
).fetchall()
return [dict(r) for r in rows]
def window_time(for_date: date | None = None, app: str | None = None) -> list[dict[str, Any]]:
"""Return minutes spent per window/tab, optionally filtered by app."""
d = for_date or _today()
start, end = date_range(d)
query = """
SELECT
o.app_name,
o.window_name,
COUNT(*) as frame_count,
ROUND(COUNT(*) * 2.0 / 60, 1) as minutes
FROM frames f
JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND o.app_name != ''
"""
params: list = [start, end]
if app:
query += " AND o.app_name = ?"
params.append(app)
query += " GROUP BY o.app_name, o.window_name ORDER BY frame_count DESC LIMIT 50"
with get_conn() as conn:
rows = conn.execute(query, params).fetchall()
return [dict(r) for r in rows]
def timeline(for_date: date | None = None, interval_minutes: int = 15) -> list[dict[str, Any]]:
"""Return activity bucketed into N-minute intervals."""
d = for_date or _today()
start, end = date_range(d)
interval_sec = interval_minutes * 60
with get_conn() as conn:
rows = conn.execute(
f"""
SELECT
datetime(
(strftime('%s', f.timestamp) / {interval_sec}) * {interval_sec},
'unixepoch'
) as bucket,
o.app_name,
COUNT(*) as frames
FROM frames f
JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND o.app_name != ''
GROUP BY bucket, o.app_name
ORDER BY bucket, frames DESC
""",
(start, end),
).fetchall()
return [dict(r) for r in rows]
def summary_stats(for_date: date | None = None) -> dict[str, Any]:
"""Return high-level stats for a date."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
frames_row = conn.execute(
"SELECT COUNT(*) as n, MIN(timestamp) as first, MAX(timestamp) as last "
"FROM frames WHERE timestamp >= ? AND timestamp < ?",
(start, end),
).fetchone()
app_count = conn.execute(
"""
SELECT COUNT(DISTINCT o.app_name) as n
FROM frames f JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ? AND o.app_name != ''
""",
(start, end),
).fetchone()
audio_count = conn.execute(
"SELECT COUNT(*) as n FROM audio_transcriptions "
"WHERE timestamp >= ? AND timestamp < ?",
(start, end),
).fetchone()
return {
"date": str(d),
"total_frames": frames_row["n"],
"first_seen": frames_row["first"],
"last_seen": frames_row["last"],
"unique_apps": app_count["n"],
"audio_segments": audio_count["n"],
}
Write...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⇧⌘E) - 1 unsaved file","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⌃⇧G)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Run and Debug (⇧⌘D)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X) - 2 require update, 1 requires restart","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Claude Code","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Containers","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"EXPLORER","depth":17,"role_description":"heading"},{"role":"AXStaticText","text":"EXPLORER","depth":18,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"SCREENPIPE [SSH: 100.73.206.126]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"consumers","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"__init__.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"activity.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"audio.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"elements.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"interactions.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"ocr.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"report.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"summary.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"static","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":".env","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"cli.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"docker-compose.yml","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"main.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"requirements.txt","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"OUTLINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"OUTLINE","depth":23,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"TIMELINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"TIMELINE","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"pipe.md, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"#!/bin/bash • Untitled-1, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"report.py, preview, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXTextArea","text":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","depth":28,"value":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","role_description":"editor","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","depth":29,"role_description":"text"},{"role":"AXRadioButton","text":"Build screenpipe data UI…, Editor Group 2","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Problems (⇧⌘M)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PROBLEMS","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Output (⇧⌘U)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUTPUT","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Debug Console (⇧⌘Y)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DEBUG CONSOLE","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Terminal (⌃`)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"TERMINAL","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Ports","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PORTS","depth":24,"role_description":"text"},{"role":"AXButton","text":"remote SSH: 100.73.206.126","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"SSH: 100.73.206.126","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Problems","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Ports Forwarded","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"Update is ready, click to restart.","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Update is ready, click to restart.","depth":17,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sign In","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Sign In","depth":17,"role_description":"text"},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Diff editor","depth":12,"role_description":"text"},{"role":"AXButton","text":"Build screenpipe data UI and summary app","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Session history","depth":18,"help_text":"Session history","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New session","depth":18,"help_text":"New session","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Let me explore the screenpipe directory to understand what we're working with.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List screenpipe directory contents","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"data\ndb.sqlite\npipes\n#recycle\n[rerun: b1]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List data and pipes directories","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-09\n2026-04-11\nai-habits\nday-recap\nmeeting-summary\nstandup-update\ntime-breakdown\nvideo-export\n[rerun: b2]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List tables in screenpipe SQLite database","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \".tables\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx\n[rerun: b3]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get ocr_text table schema","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(ocr_text);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|frame_id|INTEGER|1||0\n1|text|TEXT|1||0\n2|text_json|TEXT|0||0\n3|app_name|TEXT|1|''|0\n4|ocr_engine|TEXT|1|'unknown'|0\n5|window_name|TEXT|0||0\n6|focused|BOOLEAN|0|FALSE|0\n7|text_length|INTEGER|0||0\n8|sync_id|TEXT|0||0\n9|synced_at|DATETIME|0||0\n[rerun: b4]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get audio_transcriptions table schema","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(audio_transcriptions);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|id|INTEGER|0||1\n1|audio_chunk_id|INTEGER|1||0\n2|offset_index|INTEGER|1||0\n3|timestamp|TIMESTAMP|1||0\n4|transcription|TEXT|1||0\n5|device|TEXT|1|''|0\n6|is_input_device|BOOLEAN|1|TRUE|0\n7|speaker_id|INTEGER|0||0\n8|transcription_engine|TEXT|1|'Whisper'|0\n9|start_time|REAL|0||0\n10|end_time|REAL|0||0\n11|text_length|INTEGER|0||0\n12|sync_id|TEXT|0||0\n13|synced_at|DATETIME|0||0\n[rerun: b5]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get frames, ui_events, video_chunks schemas","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|id|INTEGER|0||1\n1|video_chunk_id|INTEGER|0|NULL|0\n2|offset_index|INTEGER|1|0|0\n3|timestamp|TIMESTAMP|1||0\n4|name|TEXT|0||0\n5|app_name|TEXT|0|NULL|0\n6|window_name|TEXT|0|NULL|0\n7|focused|BOOLEAN|0|NULL|0\n8|browser_url|TEXT|0|NULL|0\n9|device_name|TEXT|1|''|0\n10|sync_id|TEXT|0||0\n11|machine_id|TEXT|0||0\n12|synced_at|DATETIME|0||0\n13|snapshot_path|TEXT|0|NULL|0\n14|accessibility_text|TEXT|0|NULL|0\n15|accessibility_tree_json|TEXT|0|NULL|0\n16|content_hash|INTEGER|0|NULL|0\n17|simhash|INTEGER|0|NULL|0\n18|capture_trigger|TEXT|0|NULL|0\n19|text_source|TEXT|0|NULL|0\n20|cloud_blob_id|TEXT|0|NULL|0\n21|full_text|TEXT|0|NULL|0\n22|elements_ref_frame_id|INTEGER|0|NULL|0\n0|id|INTEGER|0||1\n1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0\n2|session_id|TEXT|0||0\n3|relative_ms|INTEGER|1|0|0\n4|event_type|TEXT|1||0\n5|x|INTEGER|0||0\n6|y|INTEGER|0||0\n7|delta_x|INTEGER|0||0\n8|delta_y|INTEGER|0||0\n9|button|INTEGER|0||0\n10|click_count|INTEGER|0||0\n11|key_code|INTEGER|0||0\n12|modifiers|INTEGER|0||0\n13|text_content|TEXT|0||0\n14|text_length|INTEGER|0||0\n15|app_name|TEXT|0||0\n16|app_pid|INTEGER|0||0\n17|window_title|TEXT|0||0\n18|browser_url|TEXT|0||0\n19|element_role|TEXT|0||0\n20|element_name|TEXT|0||0\n21|element_value|TEXT|0||0\n22|element_description|TEXT|0||0\n23|element_automation_id|TEXT|0||0\n24|element_bounds|TEXT|0||0\n25|frame_id|INTEGER|0||0\n26|sync_id|TEXT|0||0\n27|machine_id|TEXT|0||0\n28|synced_at|DATETIME|0||0\n0|id|INTEGER|0||1\n1|file_path|TEXT|1||0\n2|device_name|TEXT|1|''|0\n3|sync_id|TEXT|0||0\n4|machine_id|TEXT|0||0\n5|synced_at|DATETIME|0||0\n6|fps|REAL|1|0.5|0\n7|cloud_blob_id|TEXT|0|NULL|0\n[rerun: b6]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check data counts and date ranges","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;\" 2>/dev/null\nsqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;\" 2>/dev/null\nsqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*) FROM ocr_text;\" 2>/dev/null","depth":25,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00\n3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00\n666\n[rerun: b7]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Explore existing pipes for patterns","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"pipe.md\n[rerun: b8]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Read day-recap pipe documentation","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"cat /volume1/screenpipe/pipes/day-recap/pipe.md","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"---\nschedule: manual\nenabled: true\ntemplate: true\ntitle: Day Recap\ndescription: \"Today's accomplishments, key moments, and unfinished work\"\nicon: \"📋\"\nfeatured: true\n---\n\nAnalyze my screen and audio recordings from today (last 16 hours only). \n\nRead screenpipe skill first.\n\nUse this exact format:\n\n## Summary\nOne sentence: what I mainly did today.\n\n## Accomplishments\n- Top 3 things I finished, with timestamps (e.g. \"2:30 PM\")\n- Name specific apps, files, or projects\n\n## Key Moments\n- Important things I saw, said, or heard — with timestamps\n\n## Unfinished Work\n- What I should continue tomorrow — name the app/file/task\n\n## Patterns\n- Apps I used most, topics that came up repeatedly\n\nOnly report what you can verify from the data. End with: \"**Next step:** [most important thing to continue]\"\n[rerun: b9]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample app names from frames","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Safari\nActivity Monitor\nDia\niTerm2\nControl Centre\nUserNotificationCenter\nFinder\nClaude\nSlack\nFirefox\nRaycast\nNetAuthAgent\nQuickTime Player\n[rerun: b10]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample joined frame+ocr data for today","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE\n2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER\n2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p\n2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p\n2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi\n[rerun: b11]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample recent audio transcriptions","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-09T17:02:52+00:00|.|System Audio\n2026-04-09T16:59:22+00:00|Class is technically...|System Audio\n2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio\n[rerun: b12]","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Good data to work with. Here's what we have:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frames","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ocr_text","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Screen captures with OCR text, app name, window name (1135 frames so far)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Voice/system audio transcripts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ui_events","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Mouse/keyboard events with app context","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"video_chunks","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Raw video files","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Before I start building, a few quick questions:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Tech stack","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"AI summaries","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"What summaries matter most?","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Day recap (what apps/windows you used, key text seen)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"App time breakdown (time per app)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Audio/conversation recap","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Custom searchable timeline","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Here's the architecture I'm thinking:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/volume1/screenpipe/app/\n├── main.py # FastAPI web UI\n├── cli.py # Click CLI: `python cli.py day-recap`\n├── db.py # Read-only queries against db.sqlite\n├── consumers/\n│ ├── activity.py # App usage, time per window\n│ ├── ocr.py # OCR text aggregation + search\n│ ├── audio.py # Transcription queries\n│ └── summary.py # AI summary builder\n└── static/\n └── index.html # Single-page UI","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"CLI commands would look like:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"python cli.py day-recap # EOD summary\npython cli.py activity --date today # App time breakdown\npython cli.py search \"docker\" # Search OCR/audio text\npython cli.py serve # Launch web UI","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Does this direction work? Any preferences on the stack or which summaries to prioritize?","depth":22,"role_description":"text"},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"seesm ok","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check Python and available packages","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"python3 --version && pip3 list 2>/dev/null | grep -E \"fastapi|uvicorn|click|anthropic|httpx|jinja\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Python 3.11.2\n[rerun: b1]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Verify join works for today's data","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"\nSELECT f.timestamp, o.app_name, o.window_name, length(o.text) as txt_len\nFROM frames f JOIN ocr_text o ON f.id = o.frame_id\nWHERE DATE(f.timestamp) = '2026-04-11'\nORDER BY f.timestamp DESC LIMIT 3;\n\"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-11T12:54:42.597794+00:00|||2111\n2026-04-11T12:54:41.915916+00:00|||2110\n2026-04-11T12:54:39.912712+00:00|||2111\n[rerun: b2]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Install required packages","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"pip3 install fastapi uvicorn click anthropic python-dotenv 2>&1 | tail -5","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"/bin/bash: line 1: pip3: command not found\n[rerun: b3]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Find pip","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"which pip || which pip3 || python3 -m pip --version 2>/dev/null","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Exit code 1\n[rerun: b4]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bootstrap pip then install packages","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"python3 -m ensurepip --upgrade 2>&1 && python3 -m pip install fastapi uvicorn click anthropic python-dotenv 2>&1 | tail -10","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Exit code 1\n/usr/bin/python3: No module named ensurepip\n[rerun: b5]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Install pip via apt","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"apt-get install -y python3-pip python3-venv 2>&1 | tail -5","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?\n[rerun: b6]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Install pip with sudo","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Reason:","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"lets make it in docker, not to install it in nas directly","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sudo apt-get install -y python3-pip python3-venv 2>&1 | tail -5","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Good call. Let me check what Docker setup you already have and build a proper containerized app.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check existing docker-compose for reference","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume2/docker/paperlessngx/ && cat /volume2/docker/paperlessngx/docker-compose.yml 2>/dev/null | head -30","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"consume\ndata\ndb\ndocker-compose.yml\nexport\nmcp-server\nmedia\nredis\ntrash\nservices:\n redis:\n image: redis:8\n command:\n - /bin/sh\n - -c\n - redis-server --requirepass redispass\n container_name: PaperlessNGX-REDIS\n hostname: paper-redis\n security_opt:\n - no-new-privileges:true\n read_only: true\n user: 1000:10\n healthcheck:\n test: [\"CMD-SHELL\", \"redis-cli ping || exit 1\"]\n volumes:\n - /volume2/docker/paperlessngx/redis:/data:rw\n environment:\n TZ: Europe/Sofia\n restart: always\n\n db:\n image: postgres:17\n container_name: PaperlessNGX-DB\n hostname: paper-db\n mem_limit: 1g\n security_opt:\n - no-new-privileges:true\n healthcheck:\n test: [\"CMD\", \"pg_isready\", \"-q\", \"-d\", \"paperless\", \"-U\", \"paperlessuser\"]\n[rerun: b7]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check Docker availability","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"docker --version && docker compose version 2>/dev/null","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Docker version 26.1.0, build 9714adc\nDocker Compose version v2.26.1\n[rerun: b8]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Create app directory structure","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"mkdir -p /volume1/screenpipe/app/consumers /volume1/screenpipe/app/static","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"[rerun: b9]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Now let me build everything. I'll create all the files:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Write","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"requirements.txt","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"requirements.txt","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"6 lines","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"fastapi==0.115.12\nuvicorn[standard]==0.34.0\nclick==8.1.8\nanthropic==0.49.0\npython-dotenv==1.1.0","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Write","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Dockerfile","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dockerfile","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"13 lines","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"FROM python:3.12-slim\n\nWORKDIR /app\n\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\n\nCOPY . .\n\nEXPOSE 8000\n\nCMD [\"uvicorn\", \"main:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Write","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"db.py","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"db.py","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"28 lines","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"import sqlite3\nfrom contextlib import contextmanager\nfrom datetime import date, datetime, timedelta, timezone\nfrom typing import Generator\n\nDB_PATH = \"/data/db.sqlite\"\n\n\n@contextmanager\ndef get_conn() -> Generator[sqlite3.Connection, None, None]:\n conn = sqlite3.connect(f\"file:{DB_PATH}?mode=ro\", uri=True)\n conn.row_factory = sqlite3.Row\n try:\n yield conn\n finally:\n conn.close()\n\n\ndef date_range(for_date: date) -> tuple[str, str]:\n \"\"\"Return ISO timestamps for start/end of a given date (UTC).\"\"\"\n start = datetime(for_date.year, for_date.month, for_date.day, tzinfo=timezone.utc)\n end = start + timedelta(days=1)\n return start.isoformat(), end.isoformat()\n\n\ndef today() -> date:\n return datetime.now(timezone.utc).date()","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Write","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"__init__.py","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"__init__.py","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"1 line","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Write","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"activity.py","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"activity.py","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"123 lines","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"\"\"\"App usage and window focus time consumer.\"\"\"\nfrom datetime import date\nfrom typing import Any\n\nfrom db import get_conn, date_range, today as _today\n\n\ndef app_time(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Return minutes spent per app for a given date, sorted descending.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT\n o.app_name,\n COUNT(*) as frame_count,\n -- each frame ~ 2s at 0.5fps; convert to minutes\n ROUND(COUNT(*) * 2.0 / 60, 1) as minutes\n FROM frames f\n JOIN ocr_text o ON f.id = o.frame_id\n WHERE f.timestamp >= ? AND f.timestamp < ?\n AND o.app_name != ''\n GROUP BY o.app_name\n ORDER BY frame_count DESC\n \"\"\",\n (start, end),\n ).fetchall()\n return [dict(r) for r in rows]\n\n\ndef window_time(for_date: date | None = None, app: str | None = None) -> list[dict[str, Any]]:\n \"\"\"Return minutes spent per window/tab, optionally filtered by app.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n query = \"\"\"\n SELECT\n o.app_name,\n o.window_name,\n COUNT(*) as frame_count,\n ROUND(COUNT(*) * 2.0 / 60, 1) as minutes\n FROM frames f\n JOIN ocr_text o ON f.id = o.frame_id\n WHERE f.timestamp >= ? AND f.timestamp < ?\n AND o.app_name != ''\n \"\"\"\n params: list = [start, end]\n if app:\n query += \" AND o.app_name = ?\"\n params.append(app)\n query += \" GROUP BY o.app_name, o.window_name ORDER BY frame_count DESC LIMIT 50\"\n\n with get_conn() as conn:\n rows = conn.execute(query, params).fetchall()\n return [dict(r) for r in rows]\n\n\ndef timeline(for_date: date | None = None, interval_minutes: int = 15) -> list[dict[str, Any]]:\n \"\"\"Return activity bucketed into N-minute intervals.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n interval_sec = interval_minutes * 60\n\n with get_conn() as conn:\n rows = conn.execute(\n f\"\"\"\n SELECT\n datetime(\n (strftime('%s', f.timestamp) / {interval_sec}) * {interval_sec},\n 'unixepoch'\n ) as bucket,\n o.app_name,\n COUNT(*) as frames\n FROM frames f\n JOIN ocr_text o ON f.id = o.frame_id\n WHERE f.timestamp >= ? AND f.timestamp < ?\n AND o.app_name != ''\n GROUP BY bucket, o.app_name\n ORDER BY bucket, frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n return [dict(r) for r in rows]\n\n\ndef summary_stats(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Return high-level stats for a date.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n frames_row = conn.execute(\n \"SELECT COUNT(*) as n, MIN(timestamp) as first, MAX(timestamp) as last \"\n \"FROM frames WHERE timestamp >= ? AND timestamp < ?\",\n (start, end),\n ).fetchone()\n\n app_count = conn.execute(\n \"\"\"\n SELECT COUNT(DISTINCT o.app_name) as n\n FROM frames f JOIN ocr_text o ON f.id = o.frame_id\n WHERE f.timestamp >= ? AND f.timestamp < ? AND o.app_name != ''\n \"\"\",\n (start, end),\n ).fetchone()\n\n audio_count = conn.execute(\n \"SELECT COUNT(*) as n FROM audio_transcriptions \"\n \"WHERE timestamp >= ? AND timestamp < ?\",\n (start, end),\n ).fetchone()\n\n return {\n \"date\": str(d),\n \"total_frames\": frames_row[\"n\"],\n \"first_seen\": frames_row[\"first\"],\n \"last_seen\": frames_row[\"last\"],\n \"unique_apps\": app_count[\"n\"],\n \"audio_segments\": audio_count[\"n\"],\n }","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Write","depth":23,"role_description":"text"}]...
|
-8432183163325471475
|
-8713646627026237434
|
idle
|
accessibility
|
NULL
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
__init__.py
activity.py
audio.py
elements.py
interactions.py
ocr.py
report.py
summary.py
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
#!/bin/bash • Untitled-1, Editor Group 1
report.py, preview, Editor Group 1
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
Build screenpipe data UI…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Update is ready, click to restart.
Update is ready, click to restart.
Notifications
Sign In
Sign In
Screen Reader Optimized
Diff editor
Build screenpipe data UI and summary app
Session history
New session
Message actions
lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.
Thinking
Thinking
Let me explore the screenpipe directory to understand what we're working with.
Bash
List screenpipe directory contents
IN
ls /volume1/screenpipe/
Copy code to clipboard
OUT
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
List data and pipes directories
IN
ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/
Copy code to clipboard
OUT
2026-04-09
2026-04-11
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Bash
List tables in screenpipe SQLite database
IN
sqlite3 /volume1/screenpipe/db.sqlite ".tables"
Copy code to clipboard
OUT
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
[rerun: b3]
Bash
Get ocr_text table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
Copy code to clipboard
OUT
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
[rerun: b4]
Bash
Get audio_transcriptions table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(audio_transcriptions);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|audio_chunk_id|INTEGER|1||0
2|offset_index|INTEGER|1||0
3|timestamp|TIMESTAMP|1||0
4|transcription|TEXT|1||0
5|device|TEXT|1|''|0
6|is_input_device|BOOLEAN|1|TRUE|0
7|speaker_id|INTEGER|0||0
8|transcription_engine|TEXT|1|'Whisper'|0
9|start_time|REAL|0||0
10|end_time|REAL|0||0
11|text_length|INTEGER|0||0
12|sync_id|TEXT|0||0
13|synced_at|DATETIME|0||0
[rerun: b5]
Bash
Get frames, ui_events, video_chunks schemas
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|video_chunk_id|INTEGER|0|NULL|0
2|offset_index|INTEGER|1|0|0
3|timestamp|TIMESTAMP|1||0
4|name|TEXT|0||0
5|app_name|TEXT|0|NULL|0
6|window_name|TEXT|0|NULL|0
7|focused|BOOLEAN|0|NULL|0
8|browser_url|TEXT|0|NULL|0
9|device_name|TEXT|1|''|0
10|sync_id|TEXT|0||0
11|machine_id|TEXT|0||0
12|synced_at|DATETIME|0||0
13|snapshot_path|TEXT|0|NULL|0
14|accessibility_text|TEXT|0|NULL|0
15|accessibility_tree_json|TEXT|0|NULL|0
16|content_hash|INTEGER|0|NULL|0
17|simhash|INTEGER|0|NULL|0
18|capture_trigger|TEXT|0|NULL|0
19|text_source|TEXT|0|NULL|0
20|cloud_blob_id|TEXT|0|NULL|0
21|full_text|TEXT|0|NULL|0
22|elements_ref_frame_id|INTEGER|0|NULL|0
0|id|INTEGER|0||1
1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0
2|session_id|TEXT|0||0
3|relative_ms|INTEGER|1|0|0
4|event_type|TEXT|1||0
5|x|INTEGER|0||0
6|y|INTEGER|0||0
7|delta_x|INTEGER|0||0
8|delta_y|INTEGER|0||0
9|button|INTEGER|0||0
10|click_count|INTEGER|0||0
11|key_code|INTEGER|0||0
12|modifiers|INTEGER|0||0
13|text_content|TEXT|0||0
14|text_length|INTEGER|0||0
15|app_name|TEXT|0||0
16|app_pid|INTEGER|0||0
17|window_title|TEXT|0||0
18|browser_url|TEXT|0||0
19|element_role|TEXT|0||0
20|element_name|TEXT|0||0
21|element_value|TEXT|0||0
22|element_description|TEXT|0||0
23|element_automation_id|TEXT|0||0
24|element_bounds|TEXT|0||0
25|frame_id|INTEGER|0||0
26|sync_id|TEXT|0||0
27|machine_id|TEXT|0||0
28|synced_at|DATETIME|0||0
0|id|INTEGER|0||1
1|file_path|TEXT|1||0
2|device_name|TEXT|1|''|0
3|sync_id|TEXT|0||0
4|machine_id|TEXT|0||0
5|synced_at|DATETIME|0||0
6|fps|REAL|1|0.5|0
7|cloud_blob_id|TEXT|0|NULL|0
[rerun: b6]
Bash
Check data counts and date ranges
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;" 2>/dev/null
Copy code to clipboard
OUT
1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00
3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00
666
[rerun: b7]
Bash
Explore existing pipes for patterns
IN
ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50
Copy code to clipboard
OUT
pipe.md
[rerun: b8]
Bash
Read day-recap pipe documentation
IN
cat /volume1/screenpipe/pipes/day-recap/pipe.md
Copy code to clipboard
OUT
---
schedule: manual
enabled: true
template: true
title: Day Recap
description: "Today's accomplishments, key moments, and unfinished work"
icon: "📋"
featured: true
---
Analyze my screen and audio recordings from today (last 16 hours only).
Read screenpipe skill first.
Use this exact format:
## Summary
One sentence: what I mainly did today.
## Accomplishments
- Top 3 things I finished, with timestamps (e.g. "2:30 PM")
- Name specific apps, files, or projects
## Key Moments
- Important things I saw, said, or heard — with timestamps
## Unfinished Work
- What I should continue tomorrow — name the app/file/task
## Patterns
- Apps I used most, topics that came up repeatedly
Only report what you can verify from the data. End with: "**Next step:** [most important thing to continue]"
[rerun: b9]
Bash
Sample app names from frames
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;"
Copy code to clipboard
OUT
Safari
Activity Monitor
Dia
iTerm2
Control Centre
UserNotificationCenter
Finder
Claude
Slack
Firefox
Raycast
NetAuthAgent
QuickTime Player
[rerun: b10]
Bash
Sample joined frame+ocr data for today
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;"
Copy code to clipboard
OUT
2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE
2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER
2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p
2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p
2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi
[rerun: b11]
Bash
Sample recent audio transcriptions
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;"
Copy code to clipboard
OUT
2026-04-09T17:02:52+00:00|.|System Audio
2026-04-09T16:59:22+00:00|Class is technically...|System Audio
2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio
[rerun: b12]
Thinking
Thinking
Good data to work with. Here's what we have:
frames
+
ocr_text
: Screen captures with OCR text, app name, window name (1135 frames so far)
audio_transcriptions
: Voice/system audio transcripts
ui_events
: Mouse/keyboard events with app context
video_chunks
: Raw video files
Before I start building, a few quick questions:
Tech stack
— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)
AI summaries
— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?
What summaries matter most?
Day recap (what apps/windows you used, key text seen)
App time breakdown (time per app)
Audio/conversation recap
Custom searchable timeline
Here's the architecture I'm thinking:
Copy code to clipboard
/volume1/screenpipe/app/
├── main.py # FastAPI web UI
├── cli.py # Click CLI: `python cli.py day-recap`
├── db.py # Read-only queries against db.sqlite
├── consumers/
│ ├── activity.py # App usage, time per window
│ ├── ocr.py # OCR text aggregation + search
│ ├── audio.py # Transcription queries
│ └── summary.py # AI summary builder
└── static/
└── index.html # Single-page UI
CLI commands would look like:
Copy code to clipboard
python cli.py day-recap # EOD summary
python cli.py activity --date today # App time breakdown
python cli.py search "docker" # Search OCR/audio text
python cli.py serve # Launch web UI
Does this direction work? Any preferences on the stack or which summaries to prioritize?
Message actions
seesm ok
Thinking
Thinking
Bash
Check Python and available packages
IN
python3 --version && pip3 list 2>/dev/null | grep -E "fastapi|uvicorn|click|anthropic|httpx|jinja"
Copy code to clipboard
OUT
Python 3.11.2
[rerun: b1]
Bash
Verify join works for today's data
IN
sqlite3 /volume1/screenpipe/db.sqlite "
SELECT f.timestamp, o.app_name, o.window_name, length(o.text) as txt_len
FROM frames f JOIN ocr_text o ON f.id = o.frame_id
WHERE DATE(f.timestamp) = '2026-04-11'
ORDER BY f.timestamp DESC LIMIT 3;
"
Copy code to clipboard
OUT
2026-04-11T12:54:42.597794+00:00|||2111
2026-04-11T12:54:41.915916+00:00|||2110
2026-04-11T12:54:39.912712+00:00|||2111
[rerun: b2]
Bash
Install required packages
IN
pip3 install fastapi uvicorn click anthropic python-dotenv 2>&1 | tail -5
Copy code to clipboard
OUT
/bin/bash: line 1: pip3: command not found
[rerun: b3]
Bash
Find pip
IN
which pip || which pip3 || python3 -m pip --version 2>/dev/null
Copy code to clipboard
OUT
Exit code 1
[rerun: b4]
Bash
Bootstrap pip then install packages
IN
python3 -m ensurepip --upgrade 2>&1 && python3 -m pip install fastapi uvicorn click anthropic python-dotenv 2>&1 | tail -10
Copy code to clipboard
OUT
Exit code 1
/usr/bin/python3: No module named ensurepip
[rerun: b5]
Bash
Install pip via apt
IN
apt-get install -y python3-pip python3-venv 2>&1 | tail -5
Copy code to clipboard
OUT
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
[rerun: b6]
Bash
Install pip with sudo
Reason:
lets make it in docker, not to install it in nas directly
IN
sudo apt-get install -y python3-pip python3-venv 2>&1 | tail -5
Copy code to clipboard
Good call. Let me check what Docker setup you already have and build a proper containerized app.
Bash
Check existing docker-compose for reference
IN
ls /volume2/docker/paperlessngx/ && cat /volume2/docker/paperlessngx/docker-compose.yml 2>/dev/null | head -30
Copy code to clipboard
OUT
consume
data
db
docker-compose.yml
export
mcp-server
media
redis
trash
services:
redis:
image: redis:8
command:
- /bin/sh
- -c
- redis-server --requirepass redispass
container_name: PaperlessNGX-REDIS
hostname: paper-redis
security_opt:
- no-new-privileges:true
read_only: true
user: 1000:10
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- /volume2/docker/paperlessngx/redis:/data:rw
environment:
TZ: Europe/Sofia
restart: always
db:
image: postgres:17
container_name: PaperlessNGX-DB
hostname: paper-db
mem_limit: 1g
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"]
[rerun: b7]
Bash
Check Docker availability
IN
docker --version && docker compose version 2>/dev/null
Copy code to clipboard
OUT
Docker version 26.1.0, build 9714adc
Docker Compose version v2.26.1
[rerun: b8]
Bash
Create app directory structure
IN
mkdir -p /volume1/screenpipe/app/consumers /volume1/screenpipe/app/static
Copy code to clipboard
OUT
[rerun: b9]
Now let me build everything. I'll create all the files:
Write
requirements.txt
requirements.txt
6 lines
fastapi==0.115.12
uvicorn[standard]==0.34.0
click==8.1.8
anthropic==0.49.0
python-dotenv==1.1.0
Write
Dockerfile
Dockerfile
13 lines
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "[IP_ADDRESS]", "--port", "8000"]
Write
db.py
db.py
28 lines
import sqlite3
from contextlib import contextmanager
from datetime import date, datetime, timedelta, timezone
from typing import Generator
DB_PATH = "/data/db.sqlite"
@contextmanager
def get_conn() -> Generator[sqlite3.Connection, None, None]:
conn = sqlite3.connect(f"file:{DB_PATH}?mode=ro", uri=True)
conn.row_factory = sqlite3.Row
try:
yield conn
finally:
conn.close()
def date_range(for_date: date) -> tuple[str, str]:
"""Return ISO timestamps for start/end of a given date (UTC)."""
start = datetime(for_date.year, for_date.month, for_date.day, tzinfo=timezone.utc)
end = start + timedelta(days=1)
return start.isoformat(), end.isoformat()
def today() -> date:
return datetime.now(timezone.utc).date()
Write
__init__.py
__init__.py
1 line
Write
activity.py
activity.py
123 lines
"""App usage and window focus time consumer."""
from datetime import date
from typing import Any
from db import get_conn, date_range, today as _today
def app_time(for_date: date | None = None) -> list[dict[str, Any]]:
"""Return minutes spent per app for a given date, sorted descending."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT
o.app_name,
COUNT(*) as frame_count,
-- each frame ~ 2s at 0.5fps; convert to minutes
ROUND(COUNT(*) * 2.0 / 60, 1) as minutes
FROM frames f
JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND o.app_name != ''
GROUP BY o.app_name
ORDER BY frame_count DESC
""",
(start, end),
).fetchall()
return [dict(r) for r in rows]
def window_time(for_date: date | None = None, app: str | None = None) -> list[dict[str, Any]]:
"""Return minutes spent per window/tab, optionally filtered by app."""
d = for_date or _today()
start, end = date_range(d)
query = """
SELECT
o.app_name,
o.window_name,
COUNT(*) as frame_count,
ROUND(COUNT(*) * 2.0 / 60, 1) as minutes
FROM frames f
JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND o.app_name != ''
"""
params: list = [start, end]
if app:
query += " AND o.app_name = ?"
params.append(app)
query += " GROUP BY o.app_name, o.window_name ORDER BY frame_count DESC LIMIT 50"
with get_conn() as conn:
rows = conn.execute(query, params).fetchall()
return [dict(r) for r in rows]
def timeline(for_date: date | None = None, interval_minutes: int = 15) -> list[dict[str, Any]]:
"""Return activity bucketed into N-minute intervals."""
d = for_date or _today()
start, end = date_range(d)
interval_sec = interval_minutes * 60
with get_conn() as conn:
rows = conn.execute(
f"""
SELECT
datetime(
(strftime('%s', f.timestamp) / {interval_sec}) * {interval_sec},
'unixepoch'
) as bucket,
o.app_name,
COUNT(*) as frames
FROM frames f
JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND o.app_name != ''
GROUP BY bucket, o.app_name
ORDER BY bucket, frames DESC
""",
(start, end),
).fetchall()
return [dict(r) for r in rows]
def summary_stats(for_date: date | None = None) -> dict[str, Any]:
"""Return high-level stats for a date."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
frames_row = conn.execute(
"SELECT COUNT(*) as n, MIN(timestamp) as first, MAX(timestamp) as last "
"FROM frames WHERE timestamp >= ? AND timestamp < ?",
(start, end),
).fetchone()
app_count = conn.execute(
"""
SELECT COUNT(DISTINCT o.app_name) as n
FROM frames f JOIN ocr_text o ON f.id = o.frame_id
WHERE f.timestamp >= ? AND f.timestamp < ? AND o.app_name != ''
""",
(start, end),
).fetchone()
audio_count = conn.execute(
"SELECT COUNT(*) as n FROM audio_transcriptions "
"WHERE timestamp >= ? AND timestamp < ?",
(start, end),
).fetchone()
return {
"date": str(d),
"total_frames": frames_row["n"],
"first_seen": frames_row["first"],
"last_seen": frames_row["last"],
"unique_apps": app_count["n"],
"audio_segments": audio_count["n"],
}
Write...
|
1502
|
|
1504
|
33
|
26
|
2026-04-11T17:35:50.157837+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928950157_m1.jpg...
|
Code
|
Build screenpipe data UI… — screenpipe [SSH: 100.7 Build screenpipe data UI… — screenpipe [SSH: 100.73.206.126]...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
__init__.py
activity.py
audio.py
elements.py
interactions.py
ocr.py
report.py
summary.py
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
#!/bin/bash • Untitled-1, Editor Group 1
report.py, preview, Editor Group 1
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
Build screenpipe data UI…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Update is ready, click to restart.
Update is ready, click to restart.
Notifications
Sign In
Sign In
Screen Reader Optimized
Diff editor
Build screenpipe data UI and summary app
Session history
New session
Message actions
lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.
Thinking
Thinking
Let me explore the screenpipe directory to understand what we're working with.
Bash
List screenpipe directory contents
IN
ls /volume1/screenpipe/
Copy code to clipboard
OUT
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
List data and pipes directories
IN
ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/
Copy code to clipboard
OUT
2026-04-09
2026-04-11
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Bash
List tables in screenpipe SQLite database
IN
sqlite3 /volume1/screenpipe/db.sqlite ".tables"
Copy code to clipboard
OUT
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
[rerun: b3]
Bash
Get ocr_text table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
Copy code to clipboard
OUT
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
[rerun: b4]
Bash
Get audio_transcriptions table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(audio_transcriptions);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|audio_chunk_id|INTEGER|1||0
2|offset_index|INTEGER|1||0
3|timestamp|TIMESTAMP|1||0
4|transcription|TEXT|1||0
5|device|TEXT|1|''|0
6|is_input_device|BOOLEAN|1|TRUE|0
7|speaker_id|INTEGER|0||0
8|transcription_engine|TEXT|1|'Whisper'|0
9|start_time|REAL|0||0
10|end_time|REAL|0||0
11|text_length|INTEGER|0||0
12|sync_id|TEXT|0||0
13|synced_at|DATETIME|0||0
[rerun: b5]
Bash
Get frames, ui_events, video_chunks schemas
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|video_chunk_id|INTEGER|0|NULL|0
2|offset_index|INTEGER|1|0|0
3|timestamp|TIMESTAMP|1||0
4|name|TEXT|0||0
5|app_name|TEXT|0|NULL|0
6|window_name|TEXT|0|NULL|0
7|focused|BOOLEAN|0|NULL|0
8|browser_url|TEXT|0|NULL|0
9|device_name|TEXT|1|''|0
10|sync_id|TEXT|0||0
11|machine_id|TEXT|0||0
12|synced_at|DATETIME|0||0
13|snapshot_path|TEXT|0|NULL|0
14|accessibility_text|TEXT|0|NULL|0
15|accessibility_tree_json|TEXT|0|NULL|0
16|content_hash|INTEGER|0|NULL|0
17|simhash|INTEGER|0|NULL|0
18|capture_trigger|TEXT|0|NULL|0
19|text_source|TEXT|0|NULL|0
20|cloud_blob_id|TEXT|0|NULL|0
21|full_text|TEXT|0|NULL|0
22|elements_ref_frame_id|INTEGER|0|NULL|0
0|id|INTEGER|0||1
1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0
2|session_id|TEXT|0||0
3|relative_ms|INTEGER|1|0|0
4|event_type|TEXT|1||0
5|x|INTEGER|0||0
6|y|INTEGER|0||0
7|delta_x|INTEGER|0||0
8|delta_y|INTEGER|0||0
9|button|INTEGER|0||0
10|click_count|INTEGER|0||0
11|key_code|INTEGER|0||0
12|modifiers|INTEGER|0||0
13|text_content|TEXT|0||0
14|text_length|INTEGER|0||0
15|app_name|TEXT|0||0
16|app_pid|INTEGER|0||0
17|window_title|TEXT|0||0
18|browser_url|TEXT|0||0
19|element_role|TEXT|0||0
20|element_name|TEXT|0||0
21|element_value|TEXT|0||0
22|element_description|TEXT|0||0
23|element_automation_id|TEXT|0||0
24|element_bounds|TEXT|0||0
25|frame_id|INTEGER|0||0
26|sync_id|TEXT|0||0
27|machine_id|TEXT|0||0
28|synced_at|DATETIME|0||0
0|id|INTEGER|0||1
1|file_path|TEXT|1||0
2|device_name|TEXT|1|''|0
3|sync_id|TEXT|0||0
4|machine_id|TEXT|0||0
5|synced_at|DATETIME|0||0
6|fps|REAL|1|0.5|0
7|cloud_blob_id|TEXT|0|NULL|0
[rerun: b6]
Bash
Check data counts and date ranges
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;" 2>/dev/null
Copy code to clipboard
OUT
1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00
3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00
666
[rerun: b7]
Bash
Explore existing pipes for patterns
IN
ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50
Copy code to clipboard
OUT
pipe.md
[rerun: b8]
Bash
Read day-recap pipe documentation
IN
cat /volume1/screenpipe/pipes/day-recap/pipe.md
Copy code to clipboard
OUT
---
schedule: manual
enabled: true
template: true
title: Day Recap
description: "Today's accomplishments, key moments, and unfinished work"
icon: "📋"
featured: true
---
Analyze my screen and audio recordings from today (last 16 hours only).
Read screenpipe skill first.
Use this exact format:
## Summary
One sentence: what I mainly did today.
## Accomplishments
- Top 3 things I finished, with timestamps (e.g. "2:30 PM")
- Name specific apps, files, or projects
## Key Moments
- Important things I saw, said, or heard — with timestamps
## Unfinished Work
- What I should continue tomorrow — name the app/file/task
## Patterns
- Apps I used most, topics that came up repeatedly
Only report what you can verify from the data. End with: "**Next step:** [most important thing to continue]"
[rerun: b9]
Bash
Sample app names from frames
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;"
Copy code to clipboard
OUT
Safari
Activity Monitor
Dia
iTerm2
Control Centre
UserNotificationCenter
Finder
Claude
Slack
Firefox
Raycast
NetAuthAgent
QuickTime Player
[rerun: b10]
Bash
Sample joined frame+ocr data for today
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;"
Copy code to clipboard
OUT
2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE
2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER
2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p
2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p
2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi
[rerun: b11]
Bash
Sample recent audio transcriptions
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;"
Copy code to clipboard
OUT
2026-04-09T17:02:52+00:00|.|System Audio
2026-04-09T16:59:22+00:00|Class is technically...|System Audio
2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio
[rerun: b12]
Thinking
Thinking
Good data to work with. Here's what we have:
frames
+
ocr_text
: Screen captures with OCR text, app name, window name (1135 frames so far)
audio_transcriptions
: Voice/system audio transcripts
ui_events
: Mouse/keyboard events with app context
video_chunks
: Raw video files
Before I start building, a few quick questions:
Tech stack
— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)
AI summaries
— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?
What summaries matter most?
Day recap (what apps/windows you used, key text seen)
App time breakdown (time per app)
Audio/conversation recap
Custom searchable timeline
Here's the architecture I'm thinking:
Copy code to clipboard
/volume1/screenpipe/app/
├── main.py # FastAPI web UI
├── cli.py # Click CLI: `python cli.py day-recap`
├── db.py # Read-only queries against db.sqlite
├── consumers/
│ ├── activity.py # App usage, time per window
│ ├── ocr.py # OCR text aggregation + search
│ ├── audio.py # Transcription queries
│ └── summary.py # AI summary builder
└── static/
└── index.html # Single-page UI
CLI commands would look like:
Copy code to clipboard
python cli.py day-recap # EOD summary
python cli.py activity --date today # App time breakdown
python cli.py search "docker" # Search OCR/audio text
python cli.py serve # Launch web UI
Does this direction work? Any preferences on the stack or which summaries to prioritize?
Message actions
seesm ok
Thinking
Thinking
Bash
Check Python and available packages
IN
python3 --version && pip3 list 2>/dev/null | grep -E "fastapi|uvicorn|click|anthropic|httpx|jinja"
Copy code to clipboard
OUT
Python 3.11.2
[rerun: b1]
Bash
Verify join works for today's data
IN...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⇧⌘E) - 1 unsaved file","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⌃⇧G)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Run and Debug (⇧⌘D)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X) - 2 require update, 1 requires restart","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Claude Code","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Containers","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"EXPLORER","depth":17,"role_description":"heading"},{"role":"AXStaticText","text":"EXPLORER","depth":18,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"SCREENPIPE [SSH: 100.73.206.126]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"consumers","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"__init__.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"activity.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"audio.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"elements.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"interactions.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"ocr.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"report.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"summary.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"static","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":".env","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"cli.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"docker-compose.yml","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"main.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"requirements.txt","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"OUTLINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"OUTLINE","depth":23,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"TIMELINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"TIMELINE","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"pipe.md, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"#!/bin/bash • Untitled-1, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"report.py, preview, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXTextArea","text":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","depth":28,"value":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","role_description":"editor","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"\"\"\"Structured work report — no LLM needed.\"\"\"\nfrom datetime import date, datetime, timezone, timedelta\nfrom typing import Any\nfrom urllib.parse import urlparse\n\nfrom db import get_conn, date_range, today as _today\n\nBREAK_THRESHOLD_MIN = 10 # gap > 10 min = break\nWORK_APPS = {\n \"code\": {\"iTerm2\", \"Terminal\", \"Code\", \"Visual Studio Code\", \"PyCharm\", \"Xcode\", \"Cursor\"},\n \"browser\": {\"Firefox\", \"Safari\", \"Chrome\", \"Arc\", \"Dia\"},\n \"comms\": {\"Slack\", \"Teams\", \"Discord\", \"Zoom\", \"Telegram\", \"WhatsApp\"},\n \"docs\": {\"Word\", \"Pages\", \"Notion\", \"Obsidian\", \"Bear\", \"Typora\"},\n \"ai\": {\"Claude\", \"ChatGPT\"},\n \"design\": {\"Figma\", \"Sketch\", \"Photoshop\", \"Illustrator\"},\n \"media\": {\"QuickTime Player\", \"VLC\", \"Spotify\"},\n \"system\": {\"Finder\", \"Activity Monitor\", \"System Preferences\", \"System Settings\",\n \"Raycast\", \"Control Centre\", \"UserNotificationCenter\", \"NetAuthAgent\"},\n}\n\ndef _categorize(app_name: str) -> str:\n for cat, apps in WORK_APPS.items():\n if app_name in apps:\n return cat\n return \"other\"\n\ndef _extract_domain(url: str) -> str:\n try:\n h = urlparse(url).netloc\n return h.removeprefix(\"www.\") if h else url[:40]\n except Exception:\n return url[:40]\n\ndef _parse_ts(ts: str) -> datetime:\n ts = ts.replace(\"+00:00\", \"+00:00\") # already UTC\n try:\n return datetime.fromisoformat(ts)\n except ValueError:\n return datetime.fromisoformat(ts[:26] + \"+00:00\")\n\n\ndef session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:\n \"\"\"\n Detect work sessions and breaks from frame timestamps.\n Returns sessions, breaks, and totals.\n \"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp\",\n (start, end),\n ).fetchall()\n\n if not rows:\n return {\"sessions\": [], \"breaks\": [], \"total_active_min\": 0, \"total_break_min\": 0, \"date\": str(d)}\n\n timestamps = [_parse_ts(r[\"timestamp\"]) for r in rows]\n threshold = timedelta(minutes=break_min)\n\n sessions: list[dict] = []\n breaks: list[dict] = []\n sess_start = timestamps[0]\n prev = timestamps[0]\n\n for ts in timestamps[1:]:\n gap = ts - prev\n if gap > threshold:\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n breaks.append({\n \"start\": prev.isoformat(),\n \"end\": ts.isoformat(),\n \"duration_min\": round(gap.total_seconds() / 60, 1),\n })\n sess_start = ts\n prev = ts\n\n dur = (prev - sess_start).total_seconds() / 60\n sessions.append({\n \"start\": sess_start.isoformat(),\n \"end\": prev.isoformat(),\n \"duration_min\": round(dur, 1),\n })\n\n total_active = sum(s[\"duration_min\"] for s in sessions)\n total_break = sum(b[\"duration_min\"] for b in breaks)\n total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60\n\n return {\n \"date\": str(d),\n \"day_start\": timestamps[0].isoformat(),\n \"day_end\": timestamps[-1].isoformat(),\n \"total_span_min\": round(total_span, 1),\n \"total_active_min\": round(total_active, 1),\n \"total_break_min\": round(total_break, 1),\n \"sessions\": sessions,\n \"breaks\": breaks,\n }\n\n\ndef domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:\n \"\"\"Browser time grouped by domain.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n rows = conn.execute(\n \"\"\"\n SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ?\n AND browser_url IS NOT NULL AND browser_url != ''\n GROUP BY browser_url\n ORDER BY frames DESC\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Group by domain\n domains: dict[str, dict] = {}\n for r in rows:\n domain = _extract_domain(r[\"browser_url\"])\n if domain not in domains:\n domains[domain] = {\"domain\": domain, \"minutes\": 0, \"urls\": []}\n domains[domain][\"minutes\"] = round(domains[domain][\"minutes\"] + r[\"minutes\"], 1)\n domains[domain][\"urls\"].append({\"url\": r[\"browser_url\"], \"minutes\": r[\"minutes\"]})\n\n return sorted(domains.values(), key=lambda x: x[\"minutes\"], reverse=True)\n\n\ndef slack_activity(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Slack-specific: time, channels, message activity.\"\"\"\n d = for_date or _today()\n start, end = date_range(d)\n\n with get_conn() as conn:\n # Time in Slack\n time_row = conn.execute(\n \"\"\"\n SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n # Channels from window names\n channels = conn.execute(\n \"\"\"\n SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes\n FROM frames\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n AND window_name IS NOT NULL AND window_name != ''\n GROUP BY window_name ORDER BY frames DESC LIMIT 20\n \"\"\",\n (start, end),\n ).fetchall()\n\n # Keystrokes in Slack (proxy for messages sent)\n events = conn.execute(\n \"\"\"\n SELECT\n SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,\n SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks\n FROM ui_events\n WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'\n \"\"\",\n (start, end),\n ).fetchone()\n\n return {\n \"minutes\": time_row[\"minutes\"] if time_row else 0,\n \"frames\": time_row[\"frames\"] if time_row else 0,\n \"keystrokes\": events[\"keystrokes\"] if events else 0,\n \"clicks\": events[\"clicks\"] if events else 0,\n \"channels\": [dict(r) for r in channels],\n }\n\n\ndef work_report(for_date: date | None = None) -> dict[str, Any]:\n \"\"\"Full structured work report — no AI needed.\"\"\"\n from consumers.activity import app_time, ui_event_summary\n\n d = for_date or _today()\n\n apps = app_time(d)\n # Annotate with category\n categorized: dict[str, list] = {}\n for a in apps:\n cat = _categorize(a[\"app_name\"])\n categorized.setdefault(cat, []).append(a)\n\n return {\n \"date\": str(d),\n \"sessions\": session_breakdown(d),\n \"apps_by_category\": categorized,\n \"domains\": domain_breakdown(d),\n \"slack\": slack_activity(d),\n \"ui_events\": ui_event_summary(d),\n }","depth":29,"role_description":"text"},{"role":"AXRadioButton","text":"Build screenpipe data UI…, Editor Group 2","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Problems (⇧⌘M)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PROBLEMS","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Output (⇧⌘U)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUTPUT","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Debug Console (⇧⌘Y)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DEBUG CONSOLE","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Terminal (⌃`)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"TERMINAL","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Ports","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PORTS","depth":24,"role_description":"text"},{"role":"AXButton","text":"remote SSH: 100.73.206.126","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"SSH: 100.73.206.126","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Problems","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Ports Forwarded","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"Update is ready, click to restart.","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Update is ready, click to restart.","depth":17,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sign In","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Sign In","depth":17,"role_description":"text"},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Diff editor","depth":12,"role_description":"text"},{"role":"AXButton","text":"Build screenpipe data UI and summary app","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Session history","depth":18,"help_text":"Session history","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New session","depth":18,"help_text":"New session","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Let me explore the screenpipe directory to understand what we're working with.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List screenpipe directory contents","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"data\ndb.sqlite\npipes\n#recycle\n[rerun: b1]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List data and pipes directories","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-09\n2026-04-11\nai-habits\nday-recap\nmeeting-summary\nstandup-update\ntime-breakdown\nvideo-export\n[rerun: b2]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"List tables in screenpipe SQLite database","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \".tables\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx\n[rerun: b3]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get ocr_text table schema","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(ocr_text);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|frame_id|INTEGER|1||0\n1|text|TEXT|1||0\n2|text_json|TEXT|0||0\n3|app_name|TEXT|1|''|0\n4|ocr_engine|TEXT|1|'unknown'|0\n5|window_name|TEXT|0||0\n6|focused|BOOLEAN|0|FALSE|0\n7|text_length|INTEGER|0||0\n8|sync_id|TEXT|0||0\n9|synced_at|DATETIME|0||0\n[rerun: b4]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get audio_transcriptions table schema","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(audio_transcriptions);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|id|INTEGER|0||1\n1|audio_chunk_id|INTEGER|1||0\n2|offset_index|INTEGER|1||0\n3|timestamp|TIMESTAMP|1||0\n4|transcription|TEXT|1||0\n5|device|TEXT|1|''|0\n6|is_input_device|BOOLEAN|1|TRUE|0\n7|speaker_id|INTEGER|0||0\n8|transcription_engine|TEXT|1|'Whisper'|0\n9|start_time|REAL|0||0\n10|end_time|REAL|0||0\n11|text_length|INTEGER|0||0\n12|sync_id|TEXT|0||0\n13|synced_at|DATETIME|0||0\n[rerun: b5]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Get frames, ui_events, video_chunks schemas","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"0|id|INTEGER|0||1\n1|video_chunk_id|INTEGER|0|NULL|0\n2|offset_index|INTEGER|1|0|0\n3|timestamp|TIMESTAMP|1||0\n4|name|TEXT|0||0\n5|app_name|TEXT|0|NULL|0\n6|window_name|TEXT|0|NULL|0\n7|focused|BOOLEAN|0|NULL|0\n8|browser_url|TEXT|0|NULL|0\n9|device_name|TEXT|1|''|0\n10|sync_id|TEXT|0||0\n11|machine_id|TEXT|0||0\n12|synced_at|DATETIME|0||0\n13|snapshot_path|TEXT|0|NULL|0\n14|accessibility_text|TEXT|0|NULL|0\n15|accessibility_tree_json|TEXT|0|NULL|0\n16|content_hash|INTEGER|0|NULL|0\n17|simhash|INTEGER|0|NULL|0\n18|capture_trigger|TEXT|0|NULL|0\n19|text_source|TEXT|0|NULL|0\n20|cloud_blob_id|TEXT|0|NULL|0\n21|full_text|TEXT|0|NULL|0\n22|elements_ref_frame_id|INTEGER|0|NULL|0\n0|id|INTEGER|0||1\n1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0\n2|session_id|TEXT|0||0\n3|relative_ms|INTEGER|1|0|0\n4|event_type|TEXT|1||0\n5|x|INTEGER|0||0\n6|y|INTEGER|0||0\n7|delta_x|INTEGER|0||0\n8|delta_y|INTEGER|0||0\n9|button|INTEGER|0||0\n10|click_count|INTEGER|0||0\n11|key_code|INTEGER|0||0\n12|modifiers|INTEGER|0||0\n13|text_content|TEXT|0||0\n14|text_length|INTEGER|0||0\n15|app_name|TEXT|0||0\n16|app_pid|INTEGER|0||0\n17|window_title|TEXT|0||0\n18|browser_url|TEXT|0||0\n19|element_role|TEXT|0||0\n20|element_name|TEXT|0||0\n21|element_value|TEXT|0||0\n22|element_description|TEXT|0||0\n23|element_automation_id|TEXT|0||0\n24|element_bounds|TEXT|0||0\n25|frame_id|INTEGER|0||0\n26|sync_id|TEXT|0||0\n27|machine_id|TEXT|0||0\n28|synced_at|DATETIME|0||0\n0|id|INTEGER|0||1\n1|file_path|TEXT|1||0\n2|device_name|TEXT|1|''|0\n3|sync_id|TEXT|0||0\n4|machine_id|TEXT|0||0\n5|synced_at|DATETIME|0||0\n6|fps|REAL|1|0.5|0\n7|cloud_blob_id|TEXT|0|NULL|0\n[rerun: b6]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check data counts and date ranges","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;\" 2>/dev/null\nsqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;\" 2>/dev/null\nsqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*) FROM ocr_text;\" 2>/dev/null","depth":25,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00\n3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00\n666\n[rerun: b7]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Explore existing pipes for patterns","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"pipe.md\n[rerun: b8]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Read day-recap pipe documentation","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"cat /volume1/screenpipe/pipes/day-recap/pipe.md","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"---\nschedule: manual\nenabled: true\ntemplate: true\ntitle: Day Recap\ndescription: \"Today's accomplishments, key moments, and unfinished work\"\nicon: \"📋\"\nfeatured: true\n---\n\nAnalyze my screen and audio recordings from today (last 16 hours only). \n\nRead screenpipe skill first.\n\nUse this exact format:\n\n## Summary\nOne sentence: what I mainly did today.\n\n## Accomplishments\n- Top 3 things I finished, with timestamps (e.g. \"2:30 PM\")\n- Name specific apps, files, or projects\n\n## Key Moments\n- Important things I saw, said, or heard — with timestamps\n\n## Unfinished Work\n- What I should continue tomorrow — name the app/file/task\n\n## Patterns\n- Apps I used most, topics that came up repeatedly\n\nOnly report what you can verify from the data. End with: \"**Next step:** [most important thing to continue]\"\n[rerun: b9]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample app names from frames","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Safari\nActivity Monitor\nDia\niTerm2\nControl Centre\nUserNotificationCenter\nFinder\nClaude\nSlack\nFirefox\nRaycast\nNetAuthAgent\nQuickTime Player\n[rerun: b10]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample joined frame+ocr data for today","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE\n2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER\n2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p\n2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p\n2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi\n[rerun: b11]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Sample recent audio transcriptions","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"2026-04-09T17:02:52+00:00|.|System Audio\n2026-04-09T16:59:22+00:00|Class is technically...|System Audio\n2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio\n[rerun: b12]","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Good data to work with. Here's what we have:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frames","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ocr_text","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Screen captures with OCR text, app name, window name (1135 frames so far)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"audio_transcriptions","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Voice/system audio transcripts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ui_events","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Mouse/keyboard events with app context","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"video_chunks","depth":24,"role_description":"text"},{"role":"AXStaticText","text":": Raw video files","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Before I start building, a few quick questions:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Tech stack","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"AI summaries","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"What summaries matter most?","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Day recap (what apps/windows you used, key text seen)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"App time breakdown (time per app)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Audio/conversation recap","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Custom searchable timeline","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Here's the architecture I'm thinking:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/volume1/screenpipe/app/\n├── main.py # FastAPI web UI\n├── cli.py # Click CLI: `python cli.py day-recap`\n├── db.py # Read-only queries against db.sqlite\n├── consumers/\n│ ├── activity.py # App usage, time per window\n│ ├── ocr.py # OCR text aggregation + search\n│ ├── audio.py # Transcription queries\n│ └── summary.py # AI summary builder\n└── static/\n └── index.html # Single-page UI","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"CLI commands would look like:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"python cli.py day-recap # EOD summary\npython cli.py activity --date today # App time breakdown\npython cli.py search \"docker\" # Search OCR/audio text\npython cli.py serve # Launch web UI","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Does this direction work? Any preferences on the stack or which summaries to prioritize?","depth":22,"role_description":"text"},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"seesm ok","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Check Python and available packages","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"python3 --version && pip3 list 2>/dev/null | grep -E \"fastapi|uvicorn|click|anthropic|httpx|jinja\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Python 3.11.2\n[rerun: b1]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Verify join works for today's data","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"}]...
|
-7531687699068492340
|
-8789922368575043050
|
click
|
accessibility
|
NULL
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
__init__.py
activity.py
audio.py
elements.py
interactions.py
ocr.py
report.py
summary.py
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
#!/bin/bash • Untitled-1, Editor Group 1
report.py, preview, Editor Group 1
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
"""Structured work report — no LLM needed."""
from datetime import date, datetime, timezone, timedelta
from typing import Any
from urllib.parse import urlparse
from db import get_conn, date_range, today as _today
BREAK_THRESHOLD_MIN = 10 # gap > 10 min = break
WORK_APPS = {
"code": {"iTerm2", "Terminal", "Code", "Visual Studio Code", "PyCharm", "Xcode", "Cursor"},
"browser": {"Firefox", "Safari", "Chrome", "Arc", "Dia"},
"comms": {"Slack", "Teams", "Discord", "Zoom", "Telegram", "WhatsApp"},
"docs": {"Word", "Pages", "Notion", "Obsidian", "Bear", "Typora"},
"ai": {"Claude", "ChatGPT"},
"design": {"Figma", "Sketch", "Photoshop", "Illustrator"},
"media": {"QuickTime Player", "VLC", "Spotify"},
"system": {"Finder", "Activity Monitor", "System Preferences", "System Settings",
"Raycast", "Control Centre", "UserNotificationCenter", "NetAuthAgent"},
}
def _categorize(app_name: str) -> str:
for cat, apps in WORK_APPS.items():
if app_name in apps:
return cat
return "other"
def _extract_domain(url: str) -> str:
try:
h = urlparse(url).netloc
return h.removeprefix("www.") if h else url[:40]
except Exception:
return url[:40]
def _parse_ts(ts: str) -> datetime:
ts = ts.replace("+00:00", "+00:00") # already UTC
try:
return datetime.fromisoformat(ts)
except ValueError:
return datetime.fromisoformat(ts[:26] + "+00:00")
def session_breakdown(for_date: date | None = None, break_min: int = BREAK_THRESHOLD_MIN) -> dict[str, Any]:
"""
Detect work sessions and breaks from frame timestamps.
Returns sessions, breaks, and totals.
"""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"SELECT timestamp FROM frames WHERE timestamp >= ? AND timestamp < ? ORDER BY timestamp",
(start, end),
).fetchall()
if not rows:
return {"sessions": [], "breaks": [], "total_active_min": 0, "total_break_min": 0, "date": str(d)}
timestamps = [_parse_ts(r["timestamp"]) for r in rows]
threshold = timedelta(minutes=break_min)
sessions: list[dict] = []
breaks: list[dict] = []
sess_start = timestamps[0]
prev = timestamps[0]
for ts in timestamps[1:]:
gap = ts - prev
if gap > threshold:
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
breaks.append({
"start": prev.isoformat(),
"end": ts.isoformat(),
"duration_min": round(gap.total_seconds() / 60, 1),
})
sess_start = ts
prev = ts
dur = (prev - sess_start).total_seconds() / 60
sessions.append({
"start": sess_start.isoformat(),
"end": prev.isoformat(),
"duration_min": round(dur, 1),
})
total_active = sum(s["duration_min"] for s in sessions)
total_break = sum(b["duration_min"] for b in breaks)
total_span = (timestamps[-1] - timestamps[0]).total_seconds() / 60
return {
"date": str(d),
"day_start": timestamps[0].isoformat(),
"day_end": timestamps[-1].isoformat(),
"total_span_min": round(total_span, 1),
"total_active_min": round(total_active, 1),
"total_break_min": round(total_break, 1),
"sessions": sessions,
"breaks": breaks,
}
def domain_breakdown(for_date: date | None = None) -> list[dict[str, Any]]:
"""Browser time grouped by domain."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
rows = conn.execute(
"""
SELECT browser_url, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ?
AND browser_url IS NOT NULL AND browser_url != ''
GROUP BY browser_url
ORDER BY frames DESC
""",
(start, end),
).fetchall()
# Group by domain
domains: dict[str, dict] = {}
for r in rows:
domain = _extract_domain(r["browser_url"])
if domain not in domains:
domains[domain] = {"domain": domain, "minutes": 0, "urls": []}
domains[domain]["minutes"] = round(domains[domain]["minutes"] + r["minutes"], 1)
domains[domain]["urls"].append({"url": r["browser_url"], "minutes": r["minutes"]})
return sorted(domains.values(), key=lambda x: x["minutes"], reverse=True)
def slack_activity(for_date: date | None = None) -> dict[str, Any]:
"""Slack-specific: time, channels, message activity."""
d = for_date or _today()
start, end = date_range(d)
with get_conn() as conn:
# Time in Slack
time_row = conn.execute(
"""
SELECT COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
# Channels from window names
channels = conn.execute(
"""
SELECT window_name, COUNT(*) as frames, ROUND(COUNT(*)*2.0/60,1) as minutes
FROM frames
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
AND window_name IS NOT NULL AND window_name != ''
GROUP BY window_name ORDER BY frames DESC LIMIT 20
""",
(start, end),
).fetchall()
# Keystrokes in Slack (proxy for messages sent)
events = conn.execute(
"""
SELECT
SUM(CASE WHEN event_type='key' THEN 1 ELSE 0 END) as keystrokes,
SUM(CASE WHEN event_type='click' THEN 1 ELSE 0 END) as clicks
FROM ui_events
WHERE timestamp >= ? AND timestamp < ? AND app_name = 'Slack'
""",
(start, end),
).fetchone()
return {
"minutes": time_row["minutes"] if time_row else 0,
"frames": time_row["frames"] if time_row else 0,
"keystrokes": events["keystrokes"] if events else 0,
"clicks": events["clicks"] if events else 0,
"channels": [dict(r) for r in channels],
}
def work_report(for_date: date | None = None) -> dict[str, Any]:
"""Full structured work report — no AI needed."""
from consumers.activity import app_time, ui_event_summary
d = for_date or _today()
apps = app_time(d)
# Annotate with category
categorized: dict[str, list] = {}
for a in apps:
cat = _categorize(a["app_name"])
categorized.setdefault(cat, []).append(a)
return {
"date": str(d),
"sessions": session_breakdown(d),
"apps_by_category": categorized,
"domains": domain_breakdown(d),
"slack": slack_activity(d),
"ui_events": ui_event_summary(d),
}
Build screenpipe data UI…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Update is ready, click to restart.
Update is ready, click to restart.
Notifications
Sign In
Sign In
Screen Reader Optimized
Diff editor
Build screenpipe data UI and summary app
Session history
New session
Message actions
lets build app around screenpipe data and db. THe idea is to have ui and data consumers. So I can run regular commands at the end ot the day (or on demand) and create soem summary.
Thinking
Thinking
Let me explore the screenpipe directory to understand what we're working with.
Bash
List screenpipe directory contents
IN
ls /volume1/screenpipe/
Copy code to clipboard
OUT
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
List data and pipes directories
IN
ls /volume1/screenpipe/data/ | head -20 && ls /volume1/screenpipe/pipes/
Copy code to clipboard
OUT
2026-04-09
2026-04-11
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Bash
List tables in screenpipe SQLite database
IN
sqlite3 /volume1/screenpipe/db.sqlite ".tables"
Copy code to clipboard
OUT
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
[rerun: b3]
Bash
Get ocr_text table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
Copy code to clipboard
OUT
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
[rerun: b4]
Bash
Get audio_transcriptions table schema
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(audio_transcriptions);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|audio_chunk_id|INTEGER|1||0
2|offset_index|INTEGER|1||0
3|timestamp|TIMESTAMP|1||0
4|transcription|TEXT|1||0
5|device|TEXT|1|''|0
6|is_input_device|BOOLEAN|1|TRUE|0
7|speaker_id|INTEGER|0||0
8|transcription_engine|TEXT|1|'Whisper'|0
9|start_time|REAL|0||0
10|end_time|REAL|0||0
11|text_length|INTEGER|0||0
12|sync_id|TEXT|0||0
13|synced_at|DATETIME|0||0
[rerun: b5]
Bash
Get frames, ui_events, video_chunks schemas
IN
sqlite3 /volume1/screenpipe/db.sqlite "PRAGMA table_info(frames); PRAGMA table_info(ui_events); PRAGMA table_info(video_chunks);"
Copy code to clipboard
OUT
0|id|INTEGER|0||1
1|video_chunk_id|INTEGER|0|NULL|0
2|offset_index|INTEGER|1|0|0
3|timestamp|TIMESTAMP|1||0
4|name|TEXT|0||0
5|app_name|TEXT|0|NULL|0
6|window_name|TEXT|0|NULL|0
7|focused|BOOLEAN|0|NULL|0
8|browser_url|TEXT|0|NULL|0
9|device_name|TEXT|1|''|0
10|sync_id|TEXT|0||0
11|machine_id|TEXT|0||0
12|synced_at|DATETIME|0||0
13|snapshot_path|TEXT|0|NULL|0
14|accessibility_text|TEXT|0|NULL|0
15|accessibility_tree_json|TEXT|0|NULL|0
16|content_hash|INTEGER|0|NULL|0
17|simhash|INTEGER|0|NULL|0
18|capture_trigger|TEXT|0|NULL|0
19|text_source|TEXT|0|NULL|0
20|cloud_blob_id|TEXT|0|NULL|0
21|full_text|TEXT|0|NULL|0
22|elements_ref_frame_id|INTEGER|0|NULL|0
0|id|INTEGER|0||1
1|timestamp|DATETIME|1|CURRENT_TIMESTAMP|0
2|session_id|TEXT|0||0
3|relative_ms|INTEGER|1|0|0
4|event_type|TEXT|1||0
5|x|INTEGER|0||0
6|y|INTEGER|0||0
7|delta_x|INTEGER|0||0
8|delta_y|INTEGER|0||0
9|button|INTEGER|0||0
10|click_count|INTEGER|0||0
11|key_code|INTEGER|0||0
12|modifiers|INTEGER|0||0
13|text_content|TEXT|0||0
14|text_length|INTEGER|0||0
15|app_name|TEXT|0||0
16|app_pid|INTEGER|0||0
17|window_title|TEXT|0||0
18|browser_url|TEXT|0||0
19|element_role|TEXT|0||0
20|element_name|TEXT|0||0
21|element_value|TEXT|0||0
22|element_description|TEXT|0||0
23|element_automation_id|TEXT|0||0
24|element_bounds|TEXT|0||0
25|frame_id|INTEGER|0||0
26|sync_id|TEXT|0||0
27|machine_id|TEXT|0||0
28|synced_at|DATETIME|0||0
0|id|INTEGER|0||1
1|file_path|TEXT|1||0
2|device_name|TEXT|1|''|0
3|sync_id|TEXT|0||0
4|machine_id|TEXT|0||0
5|synced_at|DATETIME|0||0
6|fps|REAL|1|0.5|0
7|cloud_blob_id|TEXT|0|NULL|0
[rerun: b6]
Bash
Check data counts and date ranges
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM audio_transcriptions;" 2>/dev/null
sqlite3 /volume1/screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;" 2>/dev/null
Copy code to clipboard
OUT
1135|2026-04-09T16:53:09.043761+00:00|2026-04-11T12:54:42.597794+00:00
3|2026-04-09T16:53:20+00:00|2026-04-09T17:02:52+00:00
666
[rerun: b7]
Bash
Explore existing pipes for patterns
IN
ls /volume1/screenpipe/pipes/day-recap/ 2>/dev/null && cat /volume1/screenpipe/pipes/day-recap/*.js 2>/dev/null | head -50
Copy code to clipboard
OUT
pipe.md
[rerun: b8]
Bash
Read day-recap pipe documentation
IN
cat /volume1/screenpipe/pipes/day-recap/pipe.md
Copy code to clipboard
OUT
---
schedule: manual
enabled: true
template: true
title: Day Recap
description: "Today's accomplishments, key moments, and unfinished work"
icon: "📋"
featured: true
---
Analyze my screen and audio recordings from today (last 16 hours only).
Read screenpipe skill first.
Use this exact format:
## Summary
One sentence: what I mainly did today.
## Accomplishments
- Top 3 things I finished, with timestamps (e.g. "2:30 PM")
- Name specific apps, files, or projects
## Key Moments
- Important things I saw, said, or heard — with timestamps
## Unfinished Work
- What I should continue tomorrow — name the app/file/task
## Patterns
- Apps I used most, topics that came up repeatedly
Only report what you can verify from the data. End with: "**Next step:** [most important thing to continue]"
[rerun: b9]
Bash
Sample app names from frames
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT DISTINCT app_name FROM frames WHERE app_name != '' LIMIT 20;"
Copy code to clipboard
OUT
Safari
Activity Monitor
Dia
iTerm2
Control Centre
UserNotificationCenter
Finder
Claude
Slack
Firefox
Raycast
NetAuthAgent
QuickTime Player
[rerun: b10]
Bash
Sample joined frame+ocr data for today
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT f.timestamp, o.app_name, o.window_name, substr(o.text, 1, 100) as text FROM frames f JOIN ocr_text o ON f.id = o.frame_id WHERE DATE(f.timestamp) = '2026-04-11' LIMIT 5;"
Copy code to clipboard
OUT
2026-04-11T11:53:00.627698+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <47H5Sat 11 Apr 14:53:00-zshDOCKE
2026-04-11T11:53:02.005967+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA-zsh100% <7H5Sat 11 Apr 14:53:01-zshDOCKER
2026-04-11T11:53:03.627468+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:03-zshDOCKERuse p
2026-04-11T11:53:05.528794+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <47Sat 11 Apr 14:53:05-zshDOCKERuse p
2026-04-11T11:53:07.662098+00:00|||iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(ahlA100% <7Sat 11 Apr 14:53:07-zshDOCKERuse pi
[rerun: b11]
Bash
Sample recent audio transcriptions
IN
sqlite3 /volume1/screenpipe/db.sqlite "SELECT timestamp, substr(transcription,1,100) as text, device FROM audio_transcriptions ORDER BY timestamp DESC LIMIT 5;"
Copy code to clipboard
OUT
2026-04-09T17:02:52+00:00|.|System Audio
2026-04-09T16:59:22+00:00|Class is technically...|System Audio
2026-04-09T16:53:20+00:00|I do for you. Run the credit check. Deal apartment. Okay.|System Audio
[rerun: b12]
Thinking
Thinking
Good data to work with. Here's what we have:
frames
+
ocr_text
: Screen captures with OCR text, app name, window name (1135 frames so far)
audio_transcriptions
: Voice/system audio transcripts
ui_events
: Mouse/keyboard events with app context
video_chunks
: Raw video files
Before I start building, a few quick questions:
Tech stack
— Python OK? (FastAPI for the web UI backend, Click for CLI commands, HTMX for the frontend to keep it simple)
AI summaries
— Do you have a Claude API key to use for generating the actual summaries? Or should I integrate with a local model / skip AI for now?
What summaries matter most?
Day recap (what apps/windows you used, key text seen)
App time breakdown (time per app)
Audio/conversation recap
Custom searchable timeline
Here's the architecture I'm thinking:
Copy code to clipboard
/volume1/screenpipe/app/
├── main.py # FastAPI web UI
├── cli.py # Click CLI: `python cli.py day-recap`
├── db.py # Read-only queries against db.sqlite
├── consumers/
│ ├── activity.py # App usage, time per window
│ ├── ocr.py # OCR text aggregation + search
│ ├── audio.py # Transcription queries
│ └── summary.py # AI summary builder
└── static/
└── index.html # Single-page UI
CLI commands would look like:
Copy code to clipboard
python cli.py day-recap # EOD summary
python cli.py activity --date today # App time breakdown
python cli.py search "docker" # Search OCR/audio text
python cli.py serve # Launch web UI
Does this direction work? Any preferences on the stack or which summaries to prioritize?
Message actions
seesm ok
Thinking
Thinking
Bash
Check Python and available packages
IN
python3 --version && pip3 list 2>/dev/null | grep -E "fastapi|uvicorn|click|anthropic|httpx|jinja"
Copy code to clipboard
OUT
Python 3.11.2
[rerun: b1]
Bash
Verify join works for today's data
IN...
|
NULL
|
|
1505
|
33
|
27
|
2026-04-11T17:35:51.450864+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928951450_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Desktop 1Desktop 22026-04-11T20:26:05.68329322026- Desktop 1Desktop 22026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-84-11T20:26:05.683359Z2026-04-11T20:26:06.48854522026-84-11T20:26:07.067446Z2026-04-11T20:26:08.752985Z2026-84-11T20:26:10.38313122026-04-11T20:26:10.383762Z2026-04-11T20:26:38.33701122026-84-11T20:26:55.992688Z2026-04-11T20:26:57.33177122026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-84-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-84-11T20:32:09.668412ZAPP (-zsh)• х3• x4-zshINFO screenpipe_engine::vision_manager::manoger:Starting event-driven capture for monitor 1 (device:nonitor_1)INFO screenpipe_engine::vision_manager::manager:Skippingmonitor 2 (Display 2_2560x1440_--597.-1440) - not in allowed L1stINFO screenpipe_engine::vision_manager: :monitor_watcher:Starting monitor watcher(polling every5 seconds)INFO screenpipe_engine::event_driven_capture:event-driven capture started for monitor 1(device:monitor_1)INFO sck_rs::strean_manager: persistent SCK stream started fordisplay 1 (1440x900,INFO screenpipe_engine::event_driven_capture:startup capture formonitor 1: frame_id-1407,dur-S37msINFO screenpipe_engine::event_driven_content dedup: skipping capture for monitor 1 (hash=-9215443531147982391,trigger-visual_change)INFO screenpipe_engine::retention: retention:initialized with 14d retentionINFO screenpipe:localretention auto-enabled (14 days)INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1(hash=-9215443531147982391,INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitorINFO screenpipe_engine::event_driven_capture:dedup: skipping capture for monitor(hash-5606118560581161138,trigger-click)trigger-click)(hash-5686118560581161138,trigger-click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction:found 61 eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction:61 fromes, 9.4MB + 3.3MB (2.8x), 61 JPEGs deletedINFO screenpipe_engine::server:api_usage_Smin: 1 requestsINFO screenpipe_engine::retention: retention:cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible fronesls -lah ~/.screenpipe/data/data/ | head -20• x8du -sh ~/.screenpipe/data/data/*drwxr-xr-x5 lukas160B 11 Apr 14:52drwxr-xr-x-rw-r--r-5 lukosstaffstaff1 lukasstaff1608 11 Apr 15:038.0K9 Apr 20:43.DS Storedrwxr-xr-x14 lukasstaff4488 11 Apr 14:53 2026-84-09drwxr-xr-x98 lukas39Mstaff3.1K 11 Apr 20:32 2026-04-1160M/Users/lukos/.screenpipe/data/data/2026-04-09/Users/lukas/.screenpipe/data/dato/2026-04-11lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe234M/Users/Lukas/-screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du4.0K/Users/lukas/.screenpipe/config.json-I.screenpipe/*99M126M/Users/lukas/.screenpipe/data32K/Users/lukas/.screenpipe/db.sqlite8.0M/Users/lukos/.screenpipe/db.sqlite-shn24K/Users/lukas/.screenpipe/db.sqlite-nal/Users/lukas/.screenpipe/pipes132K132K/Users/lukos/.screenpipe/screenpipe.2026-04-09.0.1og/Users/lukas/.screenpipe/screenpipe.2026-84-11.0.10glukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.5519672845113719419888,trigger-click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-90172026-04-11T20:34:56.37968422026-84-11T20:34:58.7840272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-9017845113719419888, trigger-click)INFO screenpipe_engine::event_driven_capture:concene dedup. skipping copcoremonitor 1(hash-9017845113719419888, trigger-click)N$1...
|
NULL
|
-1775399522435671868
|
NULL
|
click
|
ocr
|
NULL
|
Desktop 1Desktop 22026-04-11T20:26:05.68329322026- Desktop 1Desktop 22026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-84-11T20:26:05.683359Z2026-04-11T20:26:06.48854522026-84-11T20:26:07.067446Z2026-04-11T20:26:08.752985Z2026-84-11T20:26:10.38313122026-04-11T20:26:10.383762Z2026-04-11T20:26:38.33701122026-84-11T20:26:55.992688Z2026-04-11T20:26:57.33177122026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-84-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-84-11T20:32:09.668412ZAPP (-zsh)• х3• x4-zshINFO screenpipe_engine::vision_manager::manoger:Starting event-driven capture for monitor 1 (device:nonitor_1)INFO screenpipe_engine::vision_manager::manager:Skippingmonitor 2 (Display 2_2560x1440_--597.-1440) - not in allowed L1stINFO screenpipe_engine::vision_manager: :monitor_watcher:Starting monitor watcher(polling every5 seconds)INFO screenpipe_engine::event_driven_capture:event-driven capture started for monitor 1(device:monitor_1)INFO sck_rs::strean_manager: persistent SCK stream started fordisplay 1 (1440x900,INFO screenpipe_engine::event_driven_capture:startup capture formonitor 1: frame_id-1407,dur-S37msINFO screenpipe_engine::event_driven_content dedup: skipping capture for monitor 1 (hash=-9215443531147982391,trigger-visual_change)INFO screenpipe_engine::retention: retention:initialized with 14d retentionINFO screenpipe:localretention auto-enabled (14 days)INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1(hash=-9215443531147982391,INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitorINFO screenpipe_engine::event_driven_capture:dedup: skipping capture for monitor(hash-5606118560581161138,trigger-click)trigger-click)(hash-5686118560581161138,trigger-click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction:found 61 eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction:61 fromes, 9.4MB + 3.3MB (2.8x), 61 JPEGs deletedINFO screenpipe_engine::server:api_usage_Smin: 1 requestsINFO screenpipe_engine::retention: retention:cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible fronesls -lah ~/.screenpipe/data/data/ | head -20• x8du -sh ~/.screenpipe/data/data/*drwxr-xr-x5 lukas160B 11 Apr 14:52drwxr-xr-x-rw-r--r-5 lukosstaffstaff1 lukasstaff1608 11 Apr 15:038.0K9 Apr 20:43.DS Storedrwxr-xr-x14 lukasstaff4488 11 Apr 14:53 2026-84-09drwxr-xr-x98 lukas39Mstaff3.1K 11 Apr 20:32 2026-04-1160M/Users/lukos/.screenpipe/data/data/2026-04-09/Users/lukas/.screenpipe/data/dato/2026-04-11lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe234M/Users/Lukas/-screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du4.0K/Users/lukas/.screenpipe/config.json-I.screenpipe/*99M126M/Users/lukas/.screenpipe/data32K/Users/lukas/.screenpipe/db.sqlite8.0M/Users/lukos/.screenpipe/db.sqlite-shn24K/Users/lukas/.screenpipe/db.sqlite-nal/Users/lukas/.screenpipe/pipes132K132K/Users/lukos/.screenpipe/screenpipe.2026-04-09.0.1og/Users/lukas/.screenpipe/screenpipe.2026-84-11.0.10glukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.5519672845113719419888,trigger-click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-90172026-04-11T20:34:56.37968422026-84-11T20:34:58.7840272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-9017845113719419888, trigger-click)INFO screenpipe_engine::event_driven_capture:concene dedup. skipping copcoremonitor 1(hash-9017845113719419888, trigger-click)N$1...
|
1504
|
|
1506
|
33
|
28
|
2026-04-11T17:35:52.294829+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928952294_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+Desktop 1Desktop 22026-04-11T20:26:05.683293Z2026 +Desktop 1Desktop 22026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-84-11T20:26:05.683359Z2026-04-11T20:26:06.48854522026-84-11T20:26:07.067446Z2026-04-11T20:26:08.752985Z2026-84-11T20:26:10.38313122026-04-11T20:26:10.383762Z2026-04-11T20:26:38.33701122026-84-11T20:26:55.992688Z2026-04-11T20:26:57.33177122026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-84-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-84-11T20:32:09.668412ZAPP (-zsh)• х3• x4-zshINFO screenpipe_engine::vision_manager::manoger:Starting event-driven capture for monitor 1 (device:nonitor_1)INFO screenpipe_engine::vision_manager::manager:Skippingmonitor 2 (Display 2_2560x1440_--597.-1440) - not in allowed L1stINFO screenpipe_engine::vision_manager: :monitor_watcher:Starting monitor watcher(polling every5 seconds)INFO screenpipe_engine: :event_driven_capture:event-driven capture started for monitor 1(device:monitor_1)INFO sck_rs::strean_manager: persistent SCK stream started fordisplay 1 (1440x900,INFO screenpipe_engine::event_driven_capture:startup capture formonitor 1: frame_id-1407,dur-S37msINFO screenpipe_engine::event_driven_content dedup: skipping capture for monitor 1 (hash«-9215443531147982391,trigger-visual_change)INFO screenpipe_engine::retention: retention:initialized with 14d retentionINFO screenpipe:localretention auto-enabled (14 days)INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1(hash=-9215443531147982391,trigger-click)INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor(hash-5606118560581161138, trigger-click)INFO screenpipe_engine::event_driven_capture:dedup: skipping capture for monitor(hash-5606118560581161138, trigger-click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction:found 61 eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction:61 fromes, 9.4MB + 3.3MB (2.8x), 61 JPEGs deletedINFO screenpipe_engine::server:api_usage_Smin: 1 requestsINFO screenpipe_engine::retention: retention:cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible fronesls -lah ~/.screenpipe/data/data/ | head -20• x8du -sh ~/.screenpipe/data/data/*drwxr-xr-x5 lukas160B 11 Apr 14:52drwxr-xr-x-rw-r--r-5 lukosstaffstaff1 lukasstaff1608 11 Apr 15:038.0K9 Apr 20:43.DS Storedrwxr-xr-x14 lukasstaff4488 11 Apr 14:53 2026-84-09drwxr-xr-x98 lukas39Mstaff3.1K 11 Apr 20:32 2026-04-1160M/Users/lukos/.screenpipe/data/data/2026-04-09/Users/lukas/.screenpipe/data/dato/2026-04-11lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe234M/Users/Lukas/-screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du4.0K/Users/lukas/.screenpipe/config.json-/.screenpipe/*99M126M/Users/lukas/.screenpipe/data32K/Users/lukas/.screenpipe/db.sqlite8.0M/Users/lukos/.screenpipe/db.sqlite-shm24K/Users/lukas/.screenpipe/db.sqlite-wal/Users/lukas/.screenpipe/pipes132K132K/Users/lukos/.screenpipe/screenpipe.2026-04-09.0.1og/Users/lukas/.screenpipe/screenpipe.2026-84-11.0.10gukas@lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-84-11T20:34:53.551967Z845113719419888,trigger-click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-90172026-04-11T20:34:56.37968422026-84-11T20:34:58.7840272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-9017845113719419888, trigger-click)INFO screenpipe_engine::event_driven_capture:concene dedup. skipping copcoremonitor 1(hash-9017845113719419888, trigger-click)N$1...
|
NULL
|
989041480193804675
|
NULL
|
click
|
ocr
|
NULL
|
+Desktop 1Desktop 22026-04-11T20:26:05.683293Z2026 +Desktop 1Desktop 22026-04-11T20:26:05.683293Z2026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-84-11T20:26:05.683359Z2026-04-11T20:26:06.48854522026-84-11T20:26:07.067446Z2026-04-11T20:26:08.752985Z2026-84-11T20:26:10.38313122026-04-11T20:26:10.383762Z2026-04-11T20:26:38.33701122026-84-11T20:26:55.992688Z2026-04-11T20:26:57.33177122026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-84-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-84-11T20:32:09.668412ZAPP (-zsh)• х3• x4-zshINFO screenpipe_engine::vision_manager::manoger:Starting event-driven capture for monitor 1 (device:nonitor_1)INFO screenpipe_engine::vision_manager::manager:Skippingmonitor 2 (Display 2_2560x1440_--597.-1440) - not in allowed L1stINFO screenpipe_engine::vision_manager: :monitor_watcher:Starting monitor watcher(polling every5 seconds)INFO screenpipe_engine: :event_driven_capture:event-driven capture started for monitor 1(device:monitor_1)INFO sck_rs::strean_manager: persistent SCK stream started fordisplay 1 (1440x900,INFO screenpipe_engine::event_driven_capture:startup capture formonitor 1: frame_id-1407,dur-S37msINFO screenpipe_engine::event_driven_content dedup: skipping capture for monitor 1 (hash«-9215443531147982391,trigger-visual_change)INFO screenpipe_engine::retention: retention:initialized with 14d retentionINFO screenpipe:localretention auto-enabled (14 days)INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor 1(hash=-9215443531147982391,trigger-click)INFO screenpipe_engine::event_driven_capture:content dedup: skipping capture for monitor(hash-5606118560581161138, trigger-click)INFO screenpipe_engine::event_driven_capture:dedup: skipping capture for monitor(hash-5606118560581161138, trigger-click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction:found 61 eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction:61 fromes, 9.4MB + 3.3MB (2.8x), 61 JPEGs deletedINFO screenpipe_engine::server:api_usage_Smin: 1 requestsINFO screenpipe_engine::retention: retention:cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFO screenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible fronesls -lah ~/.screenpipe/data/data/ | head -20• x8du -sh ~/.screenpipe/data/data/*drwxr-xr-x5 lukas160B 11 Apr 14:52drwxr-xr-x-rw-r--r-5 lukosstaffstaff1 lukasstaff1608 11 Apr 15:038.0K9 Apr 20:43.DS Storedrwxr-xr-x14 lukasstaff4488 11 Apr 14:53 2026-84-09drwxr-xr-x98 lukas39Mstaff3.1K 11 Apr 20:32 2026-04-1160M/Users/lukos/.screenpipe/data/data/2026-04-09/Users/lukas/.screenpipe/data/dato/2026-04-11lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe234M/Users/Lukas/-screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du4.0K/Users/lukas/.screenpipe/config.json-/.screenpipe/*99M126M/Users/lukas/.screenpipe/data32K/Users/lukas/.screenpipe/db.sqlite8.0M/Users/lukos/.screenpipe/db.sqlite-shm24K/Users/lukas/.screenpipe/db.sqlite-wal/Users/lukas/.screenpipe/pipes132K132K/Users/lukos/.screenpipe/screenpipe.2026-04-09.0.1og/Users/lukas/.screenpipe/screenpipe.2026-84-11.0.10gukas@lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-84-11T20:34:53.551967Z845113719419888,trigger-click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-90172026-04-11T20:34:56.37968422026-84-11T20:34:58.7840272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash-9017845113719419888, trigger-click)INFO screenpipe_engine::event_driven_capture:concene dedup. skipping copcoremonitor 1(hash-9017845113719419888, trigger-click)N$1...
|
NULL
|
|
1508
|
33
|
30
|
2026-04-11T17:35:56.585022+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928956585_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:35:56-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaffdrwxr-xr-x14lukas8.0K9 Apr 20:43.DS_Storestaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
-386891472502833637
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:35:56-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaffdrwxr-xr-x14lukas8.0K9 Apr 20:43.DS_Storestaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
1507
|
|
1511
|
33
|
33
|
2026-04-11T17:36:08.737418+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928968737_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:08-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaffdrwxr-xr-x14lukas8.0K9 Apr 20:43.DS_Storestaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
1731398371158256069
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:08-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaffdrwxr-xr-x14lukas8.0K9 Apr 20:43.DS_Storestaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
|
1513
|
33
|
35
|
2026-04-11T17:36:11.877621+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928971877_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:11-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
-3484591435239115108
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:11-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
|
1514
|
33
|
36
|
2026-04-11T17:36:15.252575+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928975252_m1.jpg...
|
Firefox
|
Firefox - Choose a profile
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Choose a Firefox profile
Choose a Firefox profile
Choose a Firefox profile
Choose a Firefox profile
Keep your work and personal browsing, including things like passwords and bookmarks, totally separate. Or create profiles for everyone who uses this device.
Open Personal
Personal
Personal
Edit profile
Delete profile
Open Work
Work
Work
Edit profile
Delete profile
Create a profile
Create a profile
Create a profile
Choose a profile when Firefox opens
Choose a profile when Firefox opens...
|
[{"role":"AXHeading","text" [{"role":"AXHeading","text":"Choose a Firefox profile","depth":2,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose a Firefox profile","depth":3,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep your work and personal browsing, including things like passwords and bookmarks, totally separate. Or create profiles for everyone who uses this device.","depth":3,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open Personal","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXHeading","text":"Personal","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Personal","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit profile","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Delete profile","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open Work","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Work","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Work","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit profile","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Delete profile","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Create a profile","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Create a profile","depth":5,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Create a profile","depth":6,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Choose a profile when Firefox opens","depth":6,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Choose a profile when Firefox opens","depth":6,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5798553087892232859
|
4227107507678606510
|
click
|
accessibility
|
NULL
|
Choose a Firefox profile
Choose a Firefox profile
Choose a Firefox profile
Choose a Firefox profile
Keep your work and personal browsing, including things like passwords and bookmarks, totally separate. Or create profiles for everyone who uses this device.
Open Personal
Personal
Personal
Edit profile
Delete profile
Open Work
Work
Work
Edit profile
Delete profile
Create a profile
Create a profile
Create a profile
Choose a profile when Firefox opens
Choose a profile when Firefox opens...
|
1513
|
|
1515
|
33
|
37
|
2026-04-11T17:36:18.735650+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928978735_m1.jpg...
|
Firefox
|
Edit profile — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Edit profile
Edit profile
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Edit
Edit
Edit your profile
Edit your profile
Profile name
Personal
Theme
Theme
Gray
Yellow
Orange
Red
Pink
Purple
Violet
Blue
Green
Cyan
System
Explore more themes
Explore more themes
Delete
Delete
Done editing
Done editing...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Edit profile","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Edit profile","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Edit","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Edit your profile","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Edit your profile","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile name","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Personal","depth":14,"value":"Personal","help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Theme","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theme","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gray","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yellow","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Orange","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Red","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pink","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Purple","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Violet","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blue","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Green","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cyan","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Explore more themes","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore more themes","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Delete","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done editing","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Done editing","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2977240195505915081
|
3813424447177543342
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Edit profile
Edit profile
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Edit
Edit
Edit your profile
Edit your profile
Profile name
Personal
Theme
Theme
Gray
Yellow
Orange
Red
Pink
Purple
Violet
Blue
Green
Cyan
System
Explore more themes
Explore more themes
Delete
Delete
Done editing
Done editing...
|
NULL
|
|
1516
|
33
|
38
|
2026-04-11T17:36:20.279500+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928980279_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:19-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
1869346649539115784
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:19-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
1515
|
|
1517
|
33
|
39
|
2026-04-11T17:36:21.191893+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928981191_m1.jpg...
|
Firefox
|
Edit profile — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Edit profile
Edit profile
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Edit
Edit
Edit your profile
Edit your profile
Profile name
Personal
Theme
Theme
Gray
Yellow
Orange
Red
Pink
Purple
Violet
Blue
Green
Cyan
System
Explore more themes
Explore more themes
Delete
Delete
Done editing
Done editing...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Edit profile","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Edit profile","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Edit","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Edit your profile","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Edit your profile","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile name","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Personal","depth":14,"value":"Personal","help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Theme","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theme","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gray","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yellow","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Orange","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Red","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pink","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Purple","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Violet","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blue","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Green","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cyan","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Explore more themes","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore more themes","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Delete","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done editing","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Done editing","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2977240195505915081
|
3813424447177543342
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Edit profile
Edit profile
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Edit
Edit
Edit your profile
Edit your profile
Profile name
Personal
Theme
Theme
Gray
Yellow
Orange
Red
Pink
Purple
Violet
Blue
Green
Cyan
System
Explore more themes
Explore more themes
Delete
Delete
Done editing
Done editing...
|
NULL
|
|
1518
|
33
|
40
|
2026-04-11T17:36:22.048541+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775928982048_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:21-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
NULL
|
3712679484194073112
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:21-zsh181DOCKER• 8812026-04-11T20:26:05.68329322026-04-11T20:26:05.683303Z2026-04-11T20:26:05.683311Z2026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.06744622026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.66490822026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• 84|-zsh|• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::vision_manager::manager:Startingevent-driven capture for monitor 1 (device: monitor_1)INFOscreenpipe_engine::vision_manager::manager:Skipping monitor 2 (Display 2_2560x1440_-597,-1440) - not inallowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Startingmonitorwatcher (polling every 5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900, 2fps)INFOINFOINFOscreenpipe-engine::eventdriven.capture: Sonteut dedup: sipping copture for monitor 1 (hn53-921544353114798392, triggeravisualchange)screenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine:: event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du -sh ~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14 lukasstaff448B 11 Apr 14:53 2026-04-09drwxr-xr-x98lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du-sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M32K/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K132K/Users/lukas/.screenpipe/pipes/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.7040272INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)...
|
1517
|
|
1519
|
33
|
41
|
2026-04-11T17:36:41.662987+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929001662_m1.jpg...
|
Firefox
|
Edit profile — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Edit profile
Edit profile
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Edit
Edit
Icon
Icon
Custom
Custom
Apply barbell avatar
Apply barbell avatar
Apply bike avatar
Apply bike avatar
Apply book avatar
Apply book avatar
Apply briefcase avatar
Apply briefcase avatar
Apply picture avatar
Apply picture avatar
Apply craft avatar
Apply craft avatar
Apply globe avatar
Apply globe avatar
Apply diamond avatar
Apply diamond avatar
Apply flower avatar
Apply flower avatar
Apply folder avatar
Apply folder avatar
Apply hammer avatar
Apply hammer avatar
Apply heart avatar
Apply heart avatar
Apply heart rate avatar
Apply heart rate avatar
Apply clock avatar
Apply clock avatar
Apply leaf avatar
Apply leaf avatar
Apply lightbulb avatar
Apply lightbulb avatar
Apply makeup avatar
Apply makeup avatar
Apply message avatar
Apply message avatar
Apply musical note avatar
Apply musical note avatar
Apply palette avatar
Apply palette avatar
Apply paw print avatar
Apply paw print avatar
Apply plane avatar
Apply plane avatar
Apply present avatar
Apply present avatar
Apply shopping cart avatar
Apply shopping cart avatar
Apply soccer ball avatar
Apply soccer ball avatar
Apply sparkle avatar
Apply sparkle avatar
Apply star avatar
Apply star avatar
Apply video game controller avatar
Apply video game controller avatar
Edit your profile
Edit your profile
Profile name
Personal
Theme
Theme
Gray
Yellow
Orange
Red
Pink
Purple
Violet
Blue
Green
Cyan
System
Explore more themes
Explore more themes
Delete
Delete
Done editing
Done editing...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Edit profile","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Edit profile","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Edit","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Icon","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Icon","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Custom","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Apply barbell avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply barbell avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply bike avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply bike avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply book avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply book avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply briefcase avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply briefcase avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply picture avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply picture avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply craft avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply craft avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply globe avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply globe avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply diamond avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply diamond avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply flower avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply flower avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply folder avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply folder avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply hammer avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply hammer avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply heart avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply heart avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply heart rate avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply heart rate avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply clock avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply clock avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply leaf avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply leaf avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply lightbulb avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply lightbulb avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply makeup avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply makeup avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply message avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply message avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply musical note avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply musical note avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply palette avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply palette avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply paw print avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply paw print avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply plane avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply plane avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply present avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply present avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply shopping cart avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply shopping cart avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply soccer ball avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply soccer ball avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply sparkle avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply sparkle avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply star avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply star avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apply video game controller avatar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply video game controller avatar","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Edit your profile","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Edit your profile","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile name","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Personal","depth":14,"value":"Personal","help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Theme","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theme","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gray","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yellow","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Orange","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Red","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pink","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Purple","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Violet","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blue","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Green","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cyan","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Explore more themes","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore more themes","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Delete","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done editing","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Done editing","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3691671427821916092
|
-5353539206676312989
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Edit profile
Edit profile
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Edit
Edit
Icon
Icon
Custom
Custom
Apply barbell avatar
Apply barbell avatar
Apply bike avatar
Apply bike avatar
Apply book avatar
Apply book avatar
Apply briefcase avatar
Apply briefcase avatar
Apply picture avatar
Apply picture avatar
Apply craft avatar
Apply craft avatar
Apply globe avatar
Apply globe avatar
Apply diamond avatar
Apply diamond avatar
Apply flower avatar
Apply flower avatar
Apply folder avatar
Apply folder avatar
Apply hammer avatar
Apply hammer avatar
Apply heart avatar
Apply heart avatar
Apply heart rate avatar
Apply heart rate avatar
Apply clock avatar
Apply clock avatar
Apply leaf avatar
Apply leaf avatar
Apply lightbulb avatar
Apply lightbulb avatar
Apply makeup avatar
Apply makeup avatar
Apply message avatar
Apply message avatar
Apply musical note avatar
Apply musical note avatar
Apply palette avatar
Apply palette avatar
Apply paw print avatar
Apply paw print avatar
Apply plane avatar
Apply plane avatar
Apply present avatar
Apply present avatar
Apply shopping cart avatar
Apply shopping cart avatar
Apply soccer ball avatar
Apply soccer ball avatar
Apply sparkle avatar
Apply sparkle avatar
Apply star avatar
Apply star avatar
Apply video game controller avatar
Apply video game controller avatar
Edit your profile
Edit your profile
Profile name
Personal
Theme
Theme
Gray
Yellow
Orange
Red
Pink
Purple
Violet
Blue
Green
Cyan
System
Explore more themes
Explore more themes
Delete
Delete
Done editing
Done editing...
|
NULL
|
|
1522
|
33
|
44
|
2026-04-11T17:36:49.812751+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929009812_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:49-zsh181DOCKER• 8812026-04-11T20:26:05.68330322026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.48854522026-04-11T20:26:07.067446Z2026-04-11T20:26:08.752985Z2026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.37496922026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3|-zsh• x4|-zsh|• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::vision_manager::manager:Skipping monitor2 (Display2_2560x1440_-597,-1440)- not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Starting monitorwatcher (polling every5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900,INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1:Zfps)frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:local retention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.1og132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:58.704027ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:36:40.3763122INFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)...
|
NULL
|
1669696218080360567
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpall100% CSat 11 Apr 20:36:49-zsh181DOCKER• 8812026-04-11T20:26:05.68330322026-04-11T20:26:05.683311Z2026-04-11T20:26:05.683359Z2026-04-11T20:26:06.48854522026-04-11T20:26:07.067446Z2026-04-11T20:26:08.752985Z2026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.37496922026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3|-zsh• x4|-zsh|• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::vision_manager::manager:Skipping monitor2 (Display2_2560x1440_-597,-1440)- not in allowed listINFOscreenpipe_engine::vision_manager::monitor_watcher: Starting monitorwatcher (polling every5 seconds)INFOscreenpipe_engine::event_driven_capture: event-driven capture startedfor monitor 1 (device: monitor_1)INFOsck_rs::stream_manager:persistent SCK stream started for display 1 (1440x900,INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1:Zfps)frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:local retention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-x5 lukasstaff160B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 15:03-rw-r--r--@1lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B11 Apr 14:53 2026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.1og132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:58.704027ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:36:40.3763122INFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)...
|
1521
|
|
1524
|
33
|
46
|
2026-04-11T17:36:56.580814+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929016580_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Drag your favorite items to the bottom of the scre Drag your favorite items to the bottom of the screen to add them to the Touch Bar. Drag items up from the Touch Bar toremove them.Show typing suggestionsDoneQ Search or enter addressDefault Set+Back→ForwardReloadHomeFullscreenQFind+New tabSidebarsAdd bookmarkReader ViewQ Search or enter addressSearch or enter addressShareSearch shortcutsSpace|...
|
NULL
|
2538597249703936375
|
NULL
|
visual_change
|
ocr
|
NULL
|
Drag your favorite items to the bottom of the scre Drag your favorite items to the bottom of the screen to add them to the Touch Bar. Drag items up from the Touch Bar toremove them.Show typing suggestionsDoneQ Search or enter addressDefault Set+Back→ForwardReloadHomeFullscreenQFind+New tabSidebarsAdd bookmarkReader ViewQ Search or enter addressSearch or enter addressShareSearch shortcutsSpace|...
|
1523
|
|
1526
|
33
|
48
|
2026-04-11T17:37:06.300343+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929026300_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:37:05-zsh181DOCKER• 8812026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05..408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.6684122DEV (-zsh)О ₴2APP (-zsh)• *3-zsh• ×4-zsh• 85-zsh886-zshO 87-zshINFOscreenpipe_engine::event_driven_capture:event-driven capturestartedfor monitor 1(device:monitor_1)INFOsck_rs::stream_manager:persistentSCK stream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B11 Apr 15:03-rw-r--r--@1lukasstaffdrwxr-xr-x14 lukasstaff8.0K9 Apr 20:43.DS_Store448B 11Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.1oglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)...
|
NULL
|
-929435556419318136
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:37:05-zsh181DOCKER• 8812026-04-11T20:26:05.68335922026-04-11T20:26:06.488545Z2026-04-11T20:26:07.067446Z2026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05..408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.6684122DEV (-zsh)О ₴2APP (-zsh)• *3-zsh• ×4-zsh• 85-zsh886-zshO 87-zshINFOscreenpipe_engine::event_driven_capture:event-driven capturestartedfor monitor 1(device:monitor_1)INFOsck_rs::stream_manager:persistentSCK stream started for display 1 (1440x900,2fps)INFOscreenpipe_engine::event_driven_capture: startupcapture for monitor 1: frame_id=1407, dur=537msINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-x5lukasstaff160B11 Apr 15:03-rw-r--r--@1lukasstaffdrwxr-xr-x14 lukasstaff8.0K9 Apr 20:43.DS_Store448B 11Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.1oglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:56.379684ZINFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)...
|
1525
|
|
1527
|
33
|
49
|
2026-04-11T17:37:09.601863+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929029601_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.0,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.0,"top":0.0,"width":0.06666667,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AI Controls","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Block AI enhancements","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Block AI enhancements","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get more details","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get more details","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Block AI enhancements","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"On-device AI","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On-device AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Seamlessly browse the web in your preferred language.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"More translations settings","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More translations settings","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Image alt text in Firefox PDF viewer","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you add images to PDFs, this adds descriptions to make them accessible.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tab group suggestions","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Get suggestions to name and organize your tabs.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key points in link previews","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"See a quick summary before opening a link.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI chatbot providers in sidebar","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI chatbot providers in sidebar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chatbot in sidebar","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What the options mean:","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Available:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ll see the feature and can use it.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enabled:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ve opted in to use the feature.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocked:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6958812327765889008
|
3890000931292073628
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
NULL
|
|
1528
|
NULL
|
0
|
2026-04-11T17:37:14.069879+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929034069_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% 147Sat 11 Apr 20:37:13-zsh181DOCKER• 8812026-04-11T20:26:07.06744622026-04-11T20:26:08.752985Z2026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• ×4-zsh• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::event_driven_capture:startupcapture for monitor 1:frame_id=1407,dur=537msINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1(hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: local retention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup: skippingINFOcapture for monitor 1 Chash=5606118560581161138,trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x),61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 1eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-x5lukasstaff160B11Apr 14:52drwxr-xr-xlukasstaff160B11Apr15:03-rw-r--r--@lukasstaff8.0KApr20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K99M/Users/lukas/.screenpipe/config.json/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.1oglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFOscreenpipe_engine:: event_ariven_capture: contentdedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFO2026-04-11T20:37:03.549467ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.6707222INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted...
|
NULL
|
7082396975850333214
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% 147Sat 11 Apr 20:37:13-zsh181DOCKER• 8812026-04-11T20:26:07.06744622026-04-11T20:26:08.752985Z2026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)О ₴2APP (-zsh)• *3-zsh• ×4-zsh• 85-zsh886-zsh0 87-zshINFOscreenpipe_engine::event_driven_capture:startupcapture for monitor 1:frame_id=1407,dur=537msINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1(hash=-9215443531147982391, trigger=visual_change)INFOscreenpipe_engine::retention: retention: initialized with 14d retentionINFOscreenpipe: local retention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup: skippingINFOcapture for monitor 1 Chash=5606118560581161138,trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshotcompaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x),61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 1eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-x5lukasstaff160B11Apr 14:52drwxr-xr-xlukasstaff160B11Apr15:03-rw-r--r--@lukasstaff8.0KApr20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:32 2026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K99M/Users/lukas/.screenpipe/config.json/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.1oglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.379684ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFOscreenpipe_engine:: event_ariven_capture: contentdedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFO2026-04-11T20:37:03.549467ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.6707222INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted...
|
1527
|
|
1529
|
34
|
0
|
2026-04-11T17:37:19.446402+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929039446_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.0,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.0,"top":0.0,"width":0.06666667,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AI Controls","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Block AI enhancements","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Block AI enhancements","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get more details","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get more details","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Block AI enhancements","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"On-device AI","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On-device AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Seamlessly browse the web in your preferred language.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"More translations settings","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More translations settings","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Image alt text in Firefox PDF viewer","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you add images to PDFs, this adds descriptions to make them accessible.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tab group suggestions","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Get suggestions to name and organize your tabs.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key points in link previews","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"See a quick summary before opening a link.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI chatbot providers in sidebar","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI chatbot providers in sidebar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chatbot in sidebar","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What the options mean:","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Available:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ll see the feature and can use it.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enabled:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ve opted in to use the feature.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocked:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6958812327765889008
|
3890000931292073628
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
NULL
|
|
1530
|
34
|
1
|
2026-04-11T17:37:28.912019+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929048912_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AI Controls","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Block AI enhancements","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Block AI enhancements","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get more details","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get more details","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Block AI enhancements","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"On-device AI","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On-device AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Seamlessly browse the web in your preferred language.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"More translations settings","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More translations settings","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Image alt text in Firefox PDF viewer","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you add images to PDFs, this adds descriptions to make them accessible.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tab group suggestions","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Get suggestions to name and organize your tabs.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key points in link previews","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"See a quick summary before opening a link.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI chatbot providers in sidebar","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI chatbot providers in sidebar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chatbot in sidebar","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What the options mean:","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Available:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ll see the feature and can use it.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enabled:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ve opted in to use the feature.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocked:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
756416505458879876
|
3881548109235244700
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
1529
|
|
1531
|
34
|
2
|
2026-04-11T17:37:35.177960+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929055177_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Settings
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Screenpipe Dashboard
Add-ons for Firefox (en-US)
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
More tools
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More tools","depth":6,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.0,"top":0.0,"width":0.06666667,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AI Controls","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Block AI enhancements","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Block AI enhancements","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get more details","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get more details","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Block AI enhancements","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"On-device AI","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On-device AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Seamlessly browse the web in your preferred language.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"More translations settings","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More translations settings","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Image alt text in Firefox PDF viewer","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you add images to PDFs, this adds descriptions to make them accessible.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tab group suggestions","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Get suggestions to name and organize your tabs.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key points in link previews","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"See a quick summary before opening a link.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI chatbot providers in sidebar","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI chatbot providers in sidebar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chatbot in sidebar","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What the options mean:","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Available:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ll see the feature and can use it.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enabled:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ve opted in to use the feature.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocked:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1492814527815759881
|
3845519310069581469
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Settings
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Screenpipe Dashboard
Add-ons for Firefox (en-US)
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
More tools
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
NULL
|
|
1532
|
34
|
3
|
2026-04-11T17:37:40.397732+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929060397_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AI Controls","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Block AI enhancements","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Block AI enhancements","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get more details","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get more details","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Block AI enhancements","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"On-device AI","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On-device AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Seamlessly browse the web in your preferred language.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"More translations settings","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More translations settings","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Image alt text in Firefox PDF viewer","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you add images to PDFs, this adds descriptions to make them accessible.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tab group suggestions","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Get suggestions to name and organize your tabs.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key points in link previews","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"See a quick summary before opening a link.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI chatbot providers in sidebar","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI chatbot providers in sidebar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chatbot in sidebar","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What the options mean:","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Available:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ll see the feature and can use it.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enabled:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ve opted in to use the feature.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocked:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-259750597993296433
|
3881548109236031132
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
1531
|
|
1533
|
34
|
4
|
2026-04-11T17:37:46.297959+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929066297_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ahl100% CSat 11 Apr 20:37:45-zsh181DOCKERO 8812026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)• ₴2APP (-zsh)• *3-zsh• x4|-zsh• 85-zsh886-zshO 87-zshINFOscreenpipe.engine::event_driven_capture:contentdedup:skipping capturefor monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-xlukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160811 Apr 15:03-rw-r--r--@lukasstaff8.0K9Apr20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.1og132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:56.379684ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:03.549467ZINFO2026-04-11T20:37:09.670722Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5X), 24 JPEGs deleted2026-04-11T20:37:44.4611892INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)...
|
NULL
|
107719888271781715
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ahl100% CSat 11 Apr 20:37:45-zsh181DOCKERO 8812026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)• ₴2APP (-zsh)• *3-zsh• x4|-zsh• 85-zsh886-zshO 87-zshINFOscreenpipe.engine::event_driven_capture:contentdedup:skipping capturefor monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-xlukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160811 Apr 15:03-rw-r--r--@lukasstaff8.0K9Apr20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.1og132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:56.379684ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:03.549467ZINFO2026-04-11T20:37:09.670722Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5X), 24 JPEGs deleted2026-04-11T20:37:44.4611892INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)...
|
NULL
|
|
1534
|
34
|
5
|
2026-04-11T17:37:48.336944+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929068336_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Passwords","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Passwords","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Passwords","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Save your passwords to a safe spot","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add them here to get started.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from another browser…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from another browser…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from a file…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from a file…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add manually","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add manually","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AI Controls","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Block AI enhancements","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Block AI enhancements","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get more details","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get more details","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Block AI enhancements","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"On-device AI","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On-device AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Seamlessly browse the web in your preferred language.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"More translations settings","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More translations settings","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Image alt text in Firefox PDF viewer","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you add images to PDFs, this adds descriptions to make them accessible.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tab group suggestions","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Get suggestions to name and organize your tabs.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key points in link previews","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"See a quick summary before opening a link.","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":27,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI chatbot providers in sidebar","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI chatbot providers in sidebar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chatbot in sidebar","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What the options mean:","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Available:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ll see the feature and can use it.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enabled:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’ve opted in to use the feature.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blocked:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
1662732957826088206
|
3850030367912117980
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
AI Controls
AI Controls
You always have a choice in Firefox, including whether to use features enhanced with AI. More controls coming soon.
Learn more
Learn more
Block AI enhancements
Block AI enhancements
Blocking means you won’t see new or current AI enhancements in Firefox, or pop-ups about them.
Get more details
Get more details
about what’s included and how to control traditional machine learning features, like search suggestions and recommendations.
Block AI enhancements
On-device AI
On-device AI
These use small AI models that download to your device if you use the feature. This approach helps protect your privacy.
Learn more
Learn more
Translations
Seamlessly browse the web in your preferred language.
More translations settings
More translations settings
Image alt text in Firefox PDF viewer
When you add images to PDFs, this adds descriptions to make them accessible.
Learn more
Learn more
Tab group suggestions
Get suggestions to name and organize your tabs.
Learn more
Learn more
Key points in link previews
See a quick summary before opening a link.
Learn more
Learn more
AI chatbot providers in sidebar
AI chatbot providers in sidebar
Keep a chatbot in view as you browse. Choose from Anthropic Claude, ChatGPT, Copilot, Google Gemini, and Le Chat Mistral.
Learn more
Learn more
Chatbot in sidebar
What the options mean:
Available:
You’ll see the feature and can use it.
Enabled:
You’ve opted in to use the feature.
Blocked:
You won’t see and can’t use the feature. For on-device AI, any models already downloaded are removed....
|
1533
|
|
1535
|
34
|
6
|
2026-04-11T17:37:49.832093+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929069832_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ahl100% CSat 11 Apr 20:37:49-zsh181DOCKERO 8812026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)• ₴2APP (-zsh)• *3-zsh• x4|-zsh• 85-zsh886-zshO 87-zshINFOscreenpipe.engine::event_driven_capture:contentdedup:skipping capturefor monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-xlukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160811 Apr 15:03-rw-r--r--@lukasstaff8.0K9Apr20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.1og132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:56.379684ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:03.549467ZINFO2026-04-11T20:37:09.670722Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5X), 24 JPEGs deleted2026-04-11T20:37:44.4611892INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)...
|
NULL
|
8175137462471067490
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ahl100% CSat 11 Apr 20:37:49-zsh181DOCKERO 8812026-04-11T20:26:08.75298522026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.992688Z2026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)• ₴2APP (-zsh)• *3-zsh• x4|-zsh• 85-zsh886-zshO 87-zshINFOscreenpipe.engine::event_driven_capture:contentdedup:skipping capturefor monitor 1 (hash=-9215443531147982391, trigger=visual_change)INFOINFOscreenpipe_engine::retention: retention: initialized with 14d retentionscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB 3.3MB (2.8x), 61 JPEGs deletedINFOscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible frames1s -lah~/.screenpipe/data/data/ | head -20• *8du-sh~/.screenpipe/data/data/*total 24drwxr-xr-xlukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160811 Apr 15:03-rw-r--r--@lukasstaff8.0K9Apr20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98 lukasstaff3.1K 11 Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.1og132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ S 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888,trigger=click)2026-04-11T20:34:56.379684ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:58.704027ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:03.549467ZINFO2026-04-11T20:37:09.670722Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5X), 24 JPEGs deleted2026-04-11T20:37:44.4611892INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)...
|
NULL
|
|
1536
|
34
|
7
|
2026-04-11T17:37:51.071368+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929071071_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
General
Home
Search
Privacy & Security
Sync...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Passwords","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Passwords","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Passwords","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Save your passwords to a safe spot","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add them here to get started.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from another browser…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from another browser…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from a file…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from a file…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add manually","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add manually","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2223272697566490698
|
-5411602371991122218
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
General
Home
Search
Privacy & Security
Sync...
|
1535
|
|
1537
|
34
|
8
|
2026-04-11T17:37:53.300856+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929073300_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
Import browser data
Import browser data
Vivaldi WORK
Vivaldi
WORK
Import all available data Bookmarks, history and autofill data
Import all available data
Bookmarks, history and autofill data
Cancel
Import...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Passwords","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Passwords","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Passwords","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Save your passwords to a safe spot","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add them here to get started.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from another browser…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from another browser…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from a file…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from a file…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add manually","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add manually","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Vivaldi WORK","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Vivaldi","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WORK","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import all available data Bookmarks, history and autofill data","depth":9,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Import all available data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bookmarks, history and autofill data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cancel","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Import","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4847561377089731380
|
-5409064939536085282
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
Import browser data
Import browser data
Vivaldi WORK
Vivaldi
WORK
Import all available data Bookmarks, history and autofill data
Import all available data
Bookmarks, history and autofill data
Cancel
Import...
|
NULL
|
|
1538
|
34
|
9
|
2026-04-11T17:37:59.293300+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929079293_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:37:59-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
4552024740898065763
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:37:59-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
1537
|
|
1539
|
34
|
10
|
2026-04-11T17:38:03.423276+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929083423_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
Import browser data
Import browser data
To import Safari bookmarks and browsing history:
Select “Continue”
Select Safari folder in the list and choose “Open”
Cancel
Continue...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Passwords","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Passwords","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Passwords","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Save your passwords to a safe spot","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add them here to get started.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from another browser…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from another browser…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import from a file…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import from a file…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add manually","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add manually","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To import Safari bookmarks and browsing history:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Select “Continue”","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Select Safari folder in the list and choose “Open”","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cancel","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Continue","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-305010254760748951
|
-5411597973944627466
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Passwords
Passwords
Close
Save your passwords to a safe spot
All passwords are encrypted and we’ll watch out for breaches and alerts if you’re affected.
Add them here to get started.
Import from another browser…
Import from another browser…
Import from a file…
Import from a file…
Add manually
Add manually
Import browser data
Import browser data
To import Safari bookmarks and browsing history:
Select “Continue”
Select Safari folder in the list and choose “Open”
Cancel
Continue...
|
NULL
|
|
1540
|
34
|
11
|
2026-04-11T17:38:05.641357+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929085641_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download
Bosnian
Download
Bulgarian
Download
Catalan
Download
Chinese (Simplified)
Download
Chinese (Traditional)
Download
Croatian
Download
Czech
Download
Danish
Download
Dutch
Download
Estonian
Download
Finnish
Download
French
Download
German
Download
Greek
Download
Gujarati
Download
Hebrew
Download
Hindi
Download
Hungarian
Download
Icelandic
Download
Indonesian
Download
Italian
Download
Japanese
Download
Kannada
Download
Korean
Download
Latvian
Download
Lithuanian
Download
Malay
Download
Malayalam
Download
Norwegian Bokmål
Download
Persian
Download
Polish
Download
Portuguese
Download
Romanian
Download
Russian
Download
Serbian
Download...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Passwords","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.0,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.0,"top":0.0,"width":0.06666667,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"General","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Default browser","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default browser","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Psst, Firefox isn’t your default.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Make default","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Make default","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Startup","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Startup","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import data","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import data","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profiles","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profiles","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each profile has separate browsing data and settings, including history, passwords, and more.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Tabs","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Interaction","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closing","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Browser Layout","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browser Layout","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Horizontal tabs Tabs at the top","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Horizontal tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs at the top","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vertical tabs Tabs on the side, in the sidebar","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs on the side, in the sidebar","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show sidebar","depth":15,"role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language and Appearance","depth":7,"bounds":{"left":0.14722222,"top":0.0,"width":0.18680556,"height":0.03},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language and Appearance","depth":8,"bounds":{"left":0.14722222,"top":0.0,"width":0.18680556,"height":0.03},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website appearance","depth":10,"bounds":{"left":0.14722222,"top":0.0,"width":0.11319444,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website appearance","depth":11,"bounds":{"left":0.14722222,"top":0.0,"width":0.11319444,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.","depth":11,"bounds":{"left":0.14722222,"top":0.0,"width":0.42430556,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic","depth":15,"bounds":{"left":0.14722222,"top":0.055555556,"width":0.14861111,"height":0.11},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic","depth":17,"bounds":{"left":0.19722222,"top":0.12888889,"width":0.048611112,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Light","depth":15,"bounds":{"left":0.3048611,"top":0.057777777,"width":0.14583333,"height":0.10555556},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Light","depth":17,"bounds":{"left":0.36597222,"top":0.12888889,"width":0.023611112,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dark","depth":15,"bounds":{"left":0.4611111,"top":0.057777777,"width":0.14583333,"height":0.10555556},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dark","depth":17,"bounds":{"left":0.5229167,"top":0.12888889,"width":0.022222223,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox themes in Extensions & Themes","depth":12,"bounds":{"left":0.14791666,"top":0.18333334,"width":0.45972222,"height":0.054444443},"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox themes in Extensions & Themes","depth":14,"bounds":{"left":0.15833333,"top":0.2,"width":0.22847222,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website contrast","depth":10,"bounds":{"left":0.14722222,"top":0.2688889,"width":0.094444446,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website contrast","depth":11,"bounds":{"left":0.14722222,"top":0.2688889,"width":0.094444446,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.","depth":11,"bounds":{"left":0.14722222,"top":0.29666665,"width":0.44722223,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Override colors","depth":14,"bounds":{"left":0.14722222,"top":0.35555556,"width":0.07638889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic (use system settings)","depth":18,"bounds":{"left":0.14722222,"top":0.38666666,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic (use system settings)","depth":18,"bounds":{"left":0.16388889,"top":0.38555557,"width":0.15347221,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Off","depth":18,"bounds":{"left":0.14722222,"top":0.42444444,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Off","depth":18,"bounds":{"left":0.16388889,"top":0.42333335,"width":0.014583333,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Custom","depth":18,"bounds":{"left":0.14722222,"top":0.46222222,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom","depth":18,"bounds":{"left":0.16388889,"top":0.4611111,"width":0.036805555,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Manage Colors…","depth":17,"bounds":{"left":0.16805555,"top":0.5,"width":0.43958333,"height":0.054444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Colors…","depth":19,"bounds":{"left":0.17847222,"top":0.51666665,"width":0.07986111,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Fonts","depth":10,"bounds":{"left":0.14722222,"top":0.58555555,"width":0.03125,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fonts","depth":11,"bounds":{"left":0.14722222,"top":0.58555555,"width":0.03125,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default font","depth":15,"bounds":{"left":0.14722222,"top":0.6255556,"width":0.05625,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Size","depth":15,"bounds":{"left":0.14722222,"top":0.70555556,"width":0.02013889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Advanced…","depth":12,"bounds":{"left":0.14791666,"top":0.78555554,"width":0.45972222,"height":0.054444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Advanced…","depth":14,"bounds":{"left":0.15833333,"top":0.80222225,"width":0.055555556,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Zoom","depth":10,"bounds":{"left":0.14722222,"top":0.87222224,"width":0.031944446,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoom","depth":11,"bounds":{"left":0.14722222,"top":0.87222224,"width":0.031944446,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default zoom","depth":15,"bounds":{"left":0.14722222,"top":0.9122222,"width":0.063194446,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Zoom text only","depth":15,"bounds":{"left":0.14722222,"top":0.99333334,"width":0.011111111,"height":0.0066666603},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoom text only","depth":15,"bounds":{"left":0.16388889,"top":0.99222225,"width":0.07083333,"height":0.0077777505},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language","depth":9,"bounds":{"left":0.14722222,"top":1.0,"width":0.4611111,"height":-0.058888912},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":10,"bounds":{"left":0.14722222,"top":1.0,"width":0.05486111,"height":-0.058888912},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose the languages used to display menus, messages, and notifications from Firefox.","depth":9,"bounds":{"left":0.14722222,"top":1.0,"width":0.41805556,"height":-0.08888888},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Set Alternatives…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Choose your preferred language for displaying pages","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Choose…","depth":8,"help_text":"Choose your preferred language for displaying pages","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.","depth":8,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Translations","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Set your language and site translation preferences and manage languages downloaded for offline translation.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Download languages for offline translation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download all","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Albanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Arabic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Azerbaijani","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bangla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bosnian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bulgarian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Catalan","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chinese (Simplified)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chinese (Traditional)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Croatian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Czech","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Danish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dutch","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Estonian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Finnish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"French","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"German","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Greek","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gujarati","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hebrew","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hindi","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hungarian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Icelandic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Indonesian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Italian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Japanese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kannada","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Korean","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Latvian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lithuanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Malay","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Malayalam","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Norwegian Bokmål","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Persian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Polish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Portuguese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Romanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Russian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Serbian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-6979509113357710835
|
8394467059291901649
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download
Bosnian
Download
Bulgarian
Download
Catalan
Download
Chinese (Simplified)
Download
Chinese (Traditional)
Download
Croatian
Download
Czech
Download
Danish
Download
Dutch
Download
Estonian
Download
Finnish
Download
French
Download
German
Download
Greek
Download
Gujarati
Download
Hebrew
Download
Hindi
Download
Hungarian
Download
Icelandic
Download
Indonesian
Download
Italian
Download
Japanese
Download
Kannada
Download
Korean
Download
Latvian
Download
Lithuanian
Download
Malay
Download
Malayalam
Download
Norwegian Bokmål
Download
Persian
Download
Polish
Download
Portuguese
Download
Romanian
Download
Russian
Download
Serbian
Download...
|
1539
|
|
1541
|
34
|
12
|
2026-04-11T17:38:07.717818+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929087717_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:38:07-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
-2726163768883061051
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:38:07-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
|
1542
|
34
|
13
|
2026-04-11T17:38:12.758508+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929092758_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download
Bosnian
Download
Bulgarian
Download
Catalan
Download
Chinese (Simplified)
Download
Chinese (Traditional)
Download
Croatian
Download
Czech
Download
Danish
Download
Dutch
Download
Estonian
Download
Finnish
Download
French
Download
German
Download
Greek
Download
Gujarati
Download
Hebrew
Download
Hindi
Download
Hungarian
Download
Icelandic
Download
Indonesian
Download
Italian
Download
Japanese
Download
Kannada
Download
Korean
Download
Latvian
Download
Lithuanian
Download
Malay
Download
Malayalam
Download
Norwegian Bokmål
Download
Persian
Download
Polish
Download
Portuguese
Download
Romanian
Download
Russian
Download
Serbian
Download
Slovak
Download
Slovenian
Download
Spanish
Download
Swedish
Download
Tamil
Download
Telugu
Download
Thai
Download
Turkish
Download
Ukrainian
Download
Vietnamese
Download
Spell check...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Passwords","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"General","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Default browser","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default browser","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Psst, Firefox isn’t your default.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Make default","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Make default","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Startup","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Startup","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import data","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import data","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profiles","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profiles","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each profile has separate browsing data and settings, including history, passwords, and more.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Tabs","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Interaction","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closing","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Browser Layout","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browser Layout","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Horizontal tabs Tabs at the top","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Horizontal tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs at the top","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vertical tabs Tabs on the side, in the sidebar","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs on the side, in the sidebar","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show sidebar","depth":15,"role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language and Appearance","depth":7,"bounds":{"left":0.3888889,"top":0.0,"width":0.18680556,"height":0.03},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language and Appearance","depth":8,"bounds":{"left":0.3888889,"top":0.0,"width":0.18680556,"height":0.03},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website appearance","depth":10,"bounds":{"left":0.3888889,"top":0.0,"width":0.11319444,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website appearance","depth":11,"bounds":{"left":0.3888889,"top":0.0,"width":0.11319444,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.","depth":11,"bounds":{"left":0.3888889,"top":0.0,"width":0.425,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic","depth":15,"bounds":{"left":0.3888889,"top":0.055555556,"width":0.14861111,"height":0.11},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic","depth":17,"bounds":{"left":0.43888888,"top":0.12888889,"width":0.048611112,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Light","depth":15,"bounds":{"left":0.5465278,"top":0.057777777,"width":0.14583333,"height":0.10555556},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Light","depth":17,"bounds":{"left":0.6076389,"top":0.12888889,"width":0.023611112,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dark","depth":15,"bounds":{"left":0.7027778,"top":0.057777777,"width":0.14583333,"height":0.10555556},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dark","depth":17,"bounds":{"left":0.76458335,"top":0.12888889,"width":0.022222223,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox themes in Extensions & Themes","depth":12,"bounds":{"left":0.38958332,"top":0.18333334,"width":0.45972222,"height":0.054444443},"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox themes in Extensions & Themes","depth":14,"bounds":{"left":0.4,"top":0.2,"width":0.22847222,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website contrast","depth":10,"bounds":{"left":0.3888889,"top":0.2688889,"width":0.094444446,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website contrast","depth":11,"bounds":{"left":0.3888889,"top":0.2688889,"width":0.094444446,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.","depth":11,"bounds":{"left":0.3888889,"top":0.29666665,"width":0.44722223,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Override colors","depth":14,"bounds":{"left":0.3888889,"top":0.35555556,"width":0.07638889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic (use system settings)","depth":18,"bounds":{"left":0.3888889,"top":0.38666666,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic (use system settings)","depth":18,"bounds":{"left":0.40555555,"top":0.38555557,"width":0.15347221,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Off","depth":18,"bounds":{"left":0.3888889,"top":0.42444444,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Off","depth":18,"bounds":{"left":0.40555555,"top":0.42333335,"width":0.014583333,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Custom","depth":18,"bounds":{"left":0.3888889,"top":0.46222222,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom","depth":18,"bounds":{"left":0.40555555,"top":0.4611111,"width":0.036805555,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Manage Colors…","depth":17,"bounds":{"left":0.4097222,"top":0.5,"width":0.43958333,"height":0.054444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Colors…","depth":19,"bounds":{"left":0.4201389,"top":0.51666665,"width":0.07986111,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Fonts","depth":10,"bounds":{"left":0.3888889,"top":0.58555555,"width":0.03125,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fonts","depth":11,"bounds":{"left":0.3888889,"top":0.58555555,"width":0.03125,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default font","depth":15,"bounds":{"left":0.3888889,"top":0.6255556,"width":0.05625,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Size","depth":15,"bounds":{"left":0.3888889,"top":0.70555556,"width":0.02013889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Advanced…","depth":12,"bounds":{"left":0.38958332,"top":0.78555554,"width":0.45972222,"height":0.054444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Advanced…","depth":14,"bounds":{"left":0.4,"top":0.80222225,"width":0.055555556,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Zoom","depth":10,"bounds":{"left":0.3888889,"top":0.87222224,"width":0.031944446,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoom","depth":11,"bounds":{"left":0.3888889,"top":0.87222224,"width":0.031944446,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default zoom","depth":15,"bounds":{"left":0.3888889,"top":0.9122222,"width":0.06388889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Zoom text only","depth":15,"bounds":{"left":0.3888889,"top":0.99333334,"width":0.011111111,"height":0.0066666603},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoom text only","depth":15,"bounds":{"left":0.40555555,"top":0.99222225,"width":0.07083333,"height":0.0077777505},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language","depth":9,"bounds":{"left":0.3888889,"top":1.0,"width":0.4611111,"height":-0.058888912},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":10,"bounds":{"left":0.3888889,"top":1.0,"width":0.05486111,"height":-0.058888912},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose the languages used to display menus, messages, and notifications from Firefox.","depth":9,"bounds":{"left":0.3888889,"top":1.0,"width":0.41805556,"height":-0.08888888},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Set Alternatives…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Choose your preferred language for displaying pages","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Choose…","depth":8,"help_text":"Choose your preferred language for displaying pages","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.","depth":8,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Translations","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Set your language and site translation preferences and manage languages downloaded for offline translation.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Download languages for offline translation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download all","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Albanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Arabic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Azerbaijani","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bangla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bosnian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bulgarian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Catalan","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chinese (Simplified)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chinese (Traditional)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Croatian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Czech","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Danish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dutch","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Estonian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Finnish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"French","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"German","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Greek","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gujarati","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hebrew","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hindi","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hungarian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Icelandic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Indonesian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Italian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Japanese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kannada","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Korean","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Latvian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lithuanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Malay","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Malayalam","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Norwegian Bokmål","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Persian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Polish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Portuguese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Romanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Russian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Serbian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slovak","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slovenian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spanish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Swedish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tamil","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Telugu","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Thai","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Turkish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ukrainian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vietnamese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Spell check","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"}]...
|
-5993288938721580781
|
8394467059291782801
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Passwords
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download
Bosnian
Download
Bulgarian
Download
Catalan
Download
Chinese (Simplified)
Download
Chinese (Traditional)
Download
Croatian
Download
Czech
Download
Danish
Download
Dutch
Download
Estonian
Download
Finnish
Download
French
Download
German
Download
Greek
Download
Gujarati
Download
Hebrew
Download
Hindi
Download
Hungarian
Download
Icelandic
Download
Indonesian
Download
Italian
Download
Japanese
Download
Kannada
Download
Korean
Download
Latvian
Download
Lithuanian
Download
Malay
Download
Malayalam
Download
Norwegian Bokmål
Download
Persian
Download
Polish
Download
Portuguese
Download
Romanian
Download
Russian
Download
Serbian
Download
Slovak
Download
Slovenian
Download
Spanish
Download
Swedish
Download
Tamil
Download
Telugu
Download
Thai
Download
Turkish
Download
Ukrainian
Download
Vietnamese
Download
Spell check...
|
1541
|
|
1543
|
34
|
14
|
2026-04-11T17:38:15.101568+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929095101_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false}]...
|
-4606778960405493770
|
-5332506666050105706
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings...
|
NULL
|
|
1544
|
34
|
15
|
2026-04-11T17:38:17.267240+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929097267_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:38:17-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
6905387951344545409
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:38:17-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
1543
|
|
1545
|
34
|
16
|
2026-04-11T17:38:21.007043+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929101007_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download
Bosnian
Download
Bulgarian
Download
Catalan
Download
Chinese (Simplified)
Download
Chinese (Traditional)
Download
Croatian
Download
Czech
Download
Danish
Download
Dutch
Download
Estonian
Download
Finnish
Download
French
Download
German
Download
Greek
Download
Gujarati
Download
Hebrew
Download
Hindi
Download
Hungarian
Download
Icelandic
Download
Indonesian
Download
Italian
Download
Japanese
Download
Kannada
Download
Korean
Download
Latvian
Download
Lithuanian
Download
Malay
Download
Malayalam
Download
Norwegian Bokmål
Download
Persian
Download
Polish
Download
Portuguese
Download
Romanian
Download
Russian
Download
Serbian
Download
Slovak
Download
Slovenian
Download
Spanish
Download
Swedish
Download
Tamil
Download
Telugu
Download
Thai
Download
Turkish
Download
Ukrainian
Download
Vietnamese
Download
Spell check
Spell check
Check your spelling as you type
Check your spelling as you type
Learn more
Learn more
Download dictionaries
Download dictionaries
How to use spell checking
How to use spell checking
Right-click a text field to turn spell check on or off or to change the language. Not all fields support spell check.
Files and Applications
Files and Applications
Downloads
Downloads
Save files to
Downloads
Choose…
Choose…
Always ask you where to save files
Always ask you where to save files
Delete files downloaded in private browsing when all private windows are closed
Delete files downloaded in private browsing when all private windows are closed
Applications
Applications
Choose how Firefox handles the files you download from the web or the applications you use while browsing.
Search file types or applications...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"General","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Default browser","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default browser","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Psst, Firefox isn’t your default.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Make default","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Make default","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Startup","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Startup","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import data","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import data","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profiles","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profiles","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each profile has separate browsing data and settings, including history, passwords, and more.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Tabs","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Interaction","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closing","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Browser Layout","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browser Layout","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Horizontal tabs Tabs at the top","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Horizontal tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs at the top","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vertical tabs Tabs on the side, in the sidebar","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs on the side, in the sidebar","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show sidebar","depth":15,"role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language and Appearance","depth":7,"bounds":{"left":0.3888889,"top":0.0,"width":0.18680556,"height":0.03},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language and Appearance","depth":8,"bounds":{"left":0.3888889,"top":0.0,"width":0.18680556,"height":0.03},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website appearance","depth":10,"bounds":{"left":0.3888889,"top":0.0,"width":0.11319444,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website appearance","depth":11,"bounds":{"left":0.3888889,"top":0.0,"width":0.11319444,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.","depth":11,"bounds":{"left":0.3888889,"top":0.0,"width":0.425,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic","depth":15,"bounds":{"left":0.3888889,"top":0.055555556,"width":0.14861111,"height":0.11},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic","depth":17,"bounds":{"left":0.43888888,"top":0.12888889,"width":0.048611112,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Light","depth":15,"bounds":{"left":0.5465278,"top":0.057777777,"width":0.14583333,"height":0.10555556},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Light","depth":17,"bounds":{"left":0.6076389,"top":0.12888889,"width":0.023611112,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dark","depth":15,"bounds":{"left":0.7027778,"top":0.057777777,"width":0.14583333,"height":0.10555556},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dark","depth":17,"bounds":{"left":0.76458335,"top":0.12888889,"width":0.022222223,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox themes in Extensions & Themes","depth":12,"bounds":{"left":0.38958332,"top":0.18333334,"width":0.45972222,"height":0.054444443},"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox themes in Extensions & Themes","depth":14,"bounds":{"left":0.4,"top":0.2,"width":0.22847222,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website contrast","depth":10,"bounds":{"left":0.3888889,"top":0.2688889,"width":0.094444446,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website contrast","depth":11,"bounds":{"left":0.3888889,"top":0.2688889,"width":0.094444446,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.","depth":11,"bounds":{"left":0.3888889,"top":0.29666665,"width":0.44722223,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Override colors","depth":14,"bounds":{"left":0.3888889,"top":0.35555556,"width":0.07638889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic (use system settings)","depth":18,"bounds":{"left":0.3888889,"top":0.38666666,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic (use system settings)","depth":18,"bounds":{"left":0.40555555,"top":0.38555557,"width":0.15347221,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Off","depth":18,"bounds":{"left":0.3888889,"top":0.42444444,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Off","depth":18,"bounds":{"left":0.40555555,"top":0.42333335,"width":0.014583333,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Custom","depth":18,"bounds":{"left":0.3888889,"top":0.46222222,"width":0.011111111,"height":0.017777778},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom","depth":18,"bounds":{"left":0.40555555,"top":0.4611111,"width":0.036805555,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Manage Colors…","depth":17,"bounds":{"left":0.4097222,"top":0.5,"width":0.43958333,"height":0.054444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Colors…","depth":19,"bounds":{"left":0.4201389,"top":0.51666665,"width":0.07986111,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Fonts","depth":10,"bounds":{"left":0.3888889,"top":0.58555555,"width":0.03125,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fonts","depth":11,"bounds":{"left":0.3888889,"top":0.58555555,"width":0.03125,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default font","depth":15,"bounds":{"left":0.3888889,"top":0.6255556,"width":0.05625,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Size","depth":15,"bounds":{"left":0.3888889,"top":0.70555556,"width":0.02013889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Advanced…","depth":12,"bounds":{"left":0.38958332,"top":0.78555554,"width":0.45972222,"height":0.054444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Advanced…","depth":14,"bounds":{"left":0.4,"top":0.80222225,"width":0.055555556,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Zoom","depth":10,"bounds":{"left":0.3888889,"top":0.87222224,"width":0.031944446,"height":0.023333333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoom","depth":11,"bounds":{"left":0.3888889,"top":0.87222224,"width":0.031944446,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default zoom","depth":15,"bounds":{"left":0.3888889,"top":0.9122222,"width":0.06388889,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Zoom text only","depth":15,"bounds":{"left":0.3888889,"top":0.99333334,"width":0.011111111,"height":0.0066666603},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoom text only","depth":15,"bounds":{"left":0.40555555,"top":0.99222225,"width":0.07083333,"height":0.0077777505},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language","depth":9,"bounds":{"left":0.3888889,"top":1.0,"width":0.4611111,"height":-0.058888912},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":10,"bounds":{"left":0.3888889,"top":1.0,"width":0.05486111,"height":-0.058888912},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose the languages used to display menus, messages, and notifications from Firefox.","depth":9,"bounds":{"left":0.3888889,"top":1.0,"width":0.41805556,"height":-0.08888888},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Set Alternatives…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Choose your preferred language for displaying pages","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Choose…","depth":8,"help_text":"Choose your preferred language for displaying pages","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.","depth":8,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Translations","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Set your language and site translation preferences and manage languages downloaded for offline translation.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Download languages for offline translation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download all","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Albanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Arabic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Azerbaijani","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bangla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bosnian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bulgarian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Catalan","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chinese (Simplified)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chinese (Traditional)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Croatian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Czech","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Danish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dutch","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Estonian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Finnish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"French","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"German","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Greek","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gujarati","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hebrew","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hindi","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hungarian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Icelandic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Indonesian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Italian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Japanese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kannada","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Korean","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Latvian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lithuanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Malay","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Malayalam","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Norwegian Bokmål","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Persian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Polish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Portuguese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Romanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Russian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Serbian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slovak","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slovenian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spanish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Swedish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tamil","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Telugu","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Thai","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Turkish","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ukrainian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vietnamese","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Spell check","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Spell check","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Check your spelling as you type","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Check your spelling as you type","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":14,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Download dictionaries","depth":12,"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Download dictionaries","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to use spell checking","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to use spell checking","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Right-click a text field to turn spell check on or off or to change the language. Not all fields support spell check.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Files and Applications","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files and Applications","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Downloads","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Downloads","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Save files to","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Downloads","depth":13,"value":"Downloads","help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Choose…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Choose…","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always ask you where to save files","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always ask you where to save files","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Delete files downloaded in private browsing when all private windows are closed","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete files downloaded in private browsing when all private windows are closed","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Applications","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Applications","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose how Firefox handles the files you download from the web or the applications you use while browsing.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search file types or applications","depth":10,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
862260663220070169
|
8394467093519399581
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download
Bosnian
Download
Bulgarian
Download
Catalan
Download
Chinese (Simplified)
Download
Chinese (Traditional)
Download
Croatian
Download
Czech
Download
Danish
Download
Dutch
Download
Estonian
Download
Finnish
Download
French
Download
German
Download
Greek
Download
Gujarati
Download
Hebrew
Download
Hindi
Download
Hungarian
Download
Icelandic
Download
Indonesian
Download
Italian
Download
Japanese
Download
Kannada
Download
Korean
Download
Latvian
Download
Lithuanian
Download
Malay
Download
Malayalam
Download
Norwegian Bokmål
Download
Persian
Download
Polish
Download
Portuguese
Download
Romanian
Download
Russian
Download
Serbian
Download
Slovak
Download
Slovenian
Download
Spanish
Download
Swedish
Download
Tamil
Download
Telugu
Download
Thai
Download
Turkish
Download
Ukrainian
Download
Vietnamese
Download
Spell check
Spell check
Check your spelling as you type
Check your spelling as you type
Learn more
Learn more
Download dictionaries
Download dictionaries
How to use spell checking
How to use spell checking
Right-click a text field to turn spell check on or off or to change the language. Not all fields support spell check.
Files and Applications
Files and Applications
Downloads
Downloads
Save files to
Downloads
Choose…
Choose…
Always ask you where to save files
Always ask you where to save files
Delete files downloaded in private browsing when all private windows are closed
Delete files downloaded in private browsing when all private windows are closed
Applications
Applications
Choose how Firefox handles the files you download from the web or the applications you use while browsing.
Search file types or applications...
|
NULL
|
|
1546
|
34
|
17
|
2026-04-11T17:38:51.290627+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929131290_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"General","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Default browser","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default browser","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Psst, Firefox isn’t your default.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Make default","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Make default","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Startup","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Startup","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import data","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import data","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profiles","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profiles","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each profile has separate browsing data and settings, including history, passwords, and more.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Tabs","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Interaction","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closing","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Browser Layout","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browser Layout","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Horizontal tabs Tabs at the top","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Horizontal tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs at the top","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vertical tabs Tabs on the side, in the sidebar","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs on the side, in the sidebar","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show sidebar","depth":15,"role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language and Appearance","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language and Appearance","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website appearance","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website appearance","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Light","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Light","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dark","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dark","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox themes in Extensions & Themes","depth":12,"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox themes in Extensions & Themes","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website contrast","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website contrast","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Override colors","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic (use system settings)","depth":18,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic (use system settings)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Off","depth":18,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Off","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Custom","depth":18,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Manage Colors…","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Colors…","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Fonts","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fonts","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default font","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3460627176111351361
|
8466524687691546257
|
idle
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font...
|
1545
|
|
1547
|
34
|
18
|
2026-04-11T17:39:12.385868+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929152385_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"General","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Default browser","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default browser","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Psst, Firefox isn’t your default.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Make default","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Make default","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Startup","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Startup","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import data","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import data","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profiles","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profiles","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each profile has separate browsing data and settings, including history, passwords, and more.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Tabs","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Interaction","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closing","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Browser Layout","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browser Layout","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Horizontal tabs Tabs at the top","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Horizontal tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs at the top","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vertical tabs Tabs on the side, in the sidebar","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs on the side, in the sidebar","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show sidebar","depth":15,"role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language and Appearance","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language and Appearance","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website appearance","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website appearance","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Light","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Light","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dark","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dark","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox themes in Extensions & Themes","depth":12,"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox themes in Extensions & Themes","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website contrast","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website contrast","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Override colors","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic (use system settings)","depth":18,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic (use system settings)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Off","depth":18,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Off","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Custom","depth":18,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Manage Colors…","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Colors…","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Fonts","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fonts","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default font","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Size","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Advanced…","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Advanced…","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Zoom","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoom","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default zoom","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Zoom text only","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoom text only","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose the languages used to display menus, messages, and notifications from Firefox.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Set Alternatives…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Choose your preferred language for displaying pages","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Choose…","depth":8,"help_text":"Choose your preferred language for displaying pages","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.","depth":8,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Translations","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Translations","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Set your language and site translation preferences and manage languages downloaded for offline translation.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings…","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Download languages for offline translation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download all","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Albanian","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Arabic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Azerbaijani","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bangla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8286423521300867109
|
8466524653331930769
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.
Override colors
Automatic (use system settings)
Automatic (use system settings)
Off
Off
Custom
Custom
Manage Colors…
Manage Colors…
Fonts
Fonts
Default font
Size
Advanced…
Advanced…
Zoom
Zoom
Default zoom
Zoom text only
Zoom text only
Language
Language
Choose the languages used to display menus, messages, and notifications from Firefox.
Set Alternatives…
Choose your preferred language for displaying pages
Choose…
Use your operating system settings for “English (GB)” to format dates, times, numbers, and measurements.
Translations
Translations
Set your language and site translation preferences and manage languages downloaded for offline translation.
Settings…
Download languages for offline translation
Download all
Albanian
Download
Arabic
Download
Azerbaijani
Download
Bangla
Download...
|
NULL
|
|
1548
|
34
|
19
|
2026-04-11T17:39:17.815610+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929157815_m1.jpg...
|
Firefox
|
Settings — Personal
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Customize sidebar","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customize sidebar","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Vertical tabs","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar on hover","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide tabs and sidebar","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move sidebar to the right","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox tools","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"AI chatbot","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI chatbot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tabs from other devices","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"History","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bookmarks","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bookmarks","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Passwords","depth":13,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Passwords","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sidebar extensions","depth":6,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidebar extensions","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Bitwarden","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Extensions","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Extensions","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox settings","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox settings","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Home","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privacy & Security","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Controls","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox Labs","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More from Mozilla","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions & Themes","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions & Themes","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Support","depth":7,"bounds":{"left":0.19861111,"top":0.0,"width":0.17083333,"height":0.04222222},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Support","depth":9,"bounds":{"left":0.22916667,"top":0.0,"width":0.06736111,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your browser is being managed by your organization.","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your browser is being managed by your organization.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Find in Settings","depth":9,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"General","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Default browser","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default browser","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Psst, Firefox isn’t your default.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Make default","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Make default","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Startup","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Startup","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open previous windows and tabs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Always check if Firefox is your default browser","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Import browser data","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import browser data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Import data","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Import data","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profiles","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profiles","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each profile has separate browsing data and settings, including history, passwords, and more.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Tabs","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links in tabs instead of new windows","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"When you open a link, image or media in a new tab, switch to it immediately","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open links from apps next to your active tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Interaction","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ctrl+Tab cycles through tabs in recently used order","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show an image preview when you hover on a tab","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use AI to suggest tabs and a name for tab groups","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closing","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before closing multiple tabs","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask before quitting with ⌘Q","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Browser Layout","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browser Layout","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Horizontal tabs Tabs at the top","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Horizontal tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs at the top","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vertical tabs Tabs on the side, in the sidebar","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vertical tabs","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tabs on the side, in the sidebar","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Show sidebar","depth":15,"role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Language and Appearance","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language and Appearance","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website appearance","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website appearance","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Automatic","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automatic","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Light","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Light","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dark","depth":15,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dark","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage Firefox themes in Extensions & Themes","depth":12,"help_text":"Opens in a new tab","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage Firefox themes in Extensions & Themes","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Website contrast","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Website contrast","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
4945128428642854447
|
8610639875767402129
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameles DXP4800PLUS-B5F8
Inbox - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
Close tab
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
New Tab
New Tab
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Customize sidebar
Close
Sidebar settings
Vertical tabs
Vertical tabs
Expand sidebar on hover
Expand sidebar on hover
Hide tabs and sidebar
Hide tabs and sidebar
Move sidebar to the right
Move sidebar to the right
Firefox tools
AI chatbot
AI chatbot
Tabs from other devices
Tabs from other devices
History
History
Bookmarks
Bookmarks
Passwords
Passwords
Sidebar extensions
Sidebar extensions
Bitwarden
Bitwarden
Manage Extensions
Manage Extensions
Manage Firefox settings
Manage Firefox settings
General
Home
Search
Privacy & Security
Sync
AI Controls
Firefox Labs
More from Mozilla
Extensions & Themes
Extensions & Themes
Firefox Support
Firefox Support
Your browser is being managed by your organization.
Your browser is being managed by your organization.
Find in Settings
General
General
Default browser
Default browser
Psst, Firefox isn’t your default.
Make default
Make default
Startup
Startup
Open previous windows and tabs
Open previous windows and tabs
Always check if Firefox is your default browser
Always check if Firefox is your default browser
Import browser data
Import browser data
Bring your bookmarks, passwords, history, extensions, and autofill data from another browser.
Import data
Import data
Profiles
Profiles
Each profile has separate browsing data and settings, including history, passwords, and more.
Learn more
Learn more
Settings
Settings
Tabs
Tabs
Opening
Open links in tabs instead of new windows
Open links in tabs instead of new windows
When you open a link, image or media in a new tab, switch to it immediately
When you open a link, image or media in a new tab, switch to it immediately
Open links from apps next to your active tab
Open links from apps next to your active tab
Interaction
Ctrl+Tab cycles through tabs in recently used order
Ctrl+Tab cycles through tabs in recently used order
Show an image preview when you hover on a tab
Show an image preview when you hover on a tab
Use AI to suggest tabs and a name for tab groups
Use AI to suggest tabs and a name for tab groups
Closing
Ask before closing multiple tabs
Ask before closing multiple tabs
Ask before quitting with ⌘Q
Ask before quitting with ⌘Q
Browser Layout
Browser Layout
Horizontal tabs Tabs at the top
Horizontal tabs
Tabs at the top
Vertical tabs Tabs on the side, in the sidebar
Vertical tabs
Tabs on the side, in the sidebar
Show sidebar
Show sidebar
Quickly access bookmarks, tabs from your phone, AI chatbots, and more without leaving your main view.
Language and Appearance
Language and Appearance
Website appearance
Website appearance
Some websites adapt their color scheme based on your preferences. Choose which color scheme you’d like to use for those sites.
Automatic
Automatic
Light
Light
Dark
Dark
Manage Firefox themes in Extensions & Themes
Manage Firefox themes in Extensions & Themes
Website contrast
Website contrast
Websites use a variety of foreground and background colors. For consistent contrast, you can use the same colors across websites....
|
1547
|
|
1549
|
34
|
20
|
2026-04-11T17:39:21.966569+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929161966_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:21-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
-3843154777062897725
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:21-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
|
1550
|
34
|
21
|
2026-04-11T17:39:23.521193+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929163521_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:23-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
3971819996089970872
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:23-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
1549
|
|
1551
|
34
|
22
|
2026-04-11T17:39:26.465256+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929166465_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:26-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
-4307802758647221233
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:26-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
|
1552
|
34
|
23
|
2026-04-11T17:39:30.301051+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775929170301_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:30-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
NULL
|
5860855315057077504
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpall100% CSat 11 Apr 20:39:30-zsh181DOCKER• 8812026-04-11T20:26:10.383131Z2026-04-11T20:26:10.383762Z2026-04-11T20:26:38.337011Z2026-04-11T20:26:55.99268822026-04-11T20:26:57.331771Z2026-04-11T20:27:05.408691Z2026-04-11T20:27:09.664908Z2026-04-11T20:31:05.374969Z2026-04-11T20:31:40.380610Z2026-04-11T20:32:09.668412ZDEV (-zsh)O 82APP (-zsh)• *3-zsh• *4-zsh• 85-zsh86-zshO 87-zshINFOscreenpipe_engine::retention:retention: initialized with 14d retentionINFOscreenpipe:localretention auto-enabled (14 days)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9215443531147982391, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5606118560581161138, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 9.4MB → 3.3MB (2.8x), 61 JPEGs deletedscreenpipe_engine::server: api_usage_5min: 1 requestsINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:31:40.380594+00:00 (14d retention)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 1 eligible framesls -lah ~/.screenpipe/data/data/ | head-20• *8du-sh~/.screenpipe/data/data/*total24drwxr-xr-x5lukasstaff160B 11 Apr 14:52drwxr-xr-xlukasstaff160B 11 Apr 15:03-rw-r--r--@lukasstaff8.0K9 Apr 20:43.DS_Storedrwxr-xr-x14lukasstaff448B 11 Apr 14:532026-04-09drwxr-xr-x98lukasstaff3.1K 11Apr 20:322026-04-1139M/Users/lukas/.screenpipe/data/data/2026-04-0960M/Users/lukas/.screenpipe/data/data/2026-04-11lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe234M/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/234M/Users/lukas/.screenpipe/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json99M/Users/lukas/.screenpipe/data126M/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm8.0M/Users/lukas/.screenpipe/db.sqlite-wal24K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log132K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 2026-04-11T20:34:53.551967Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:34:56.3796842INFO2026-04-11T20:34:58.704027Zscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=9017845113719419888, trigger=click)2026-04-11T20:36:40.376312ZINFO screenpipe_engine::retention: retention: cleaning up data before 2026-03-28T17:36:40.376264+00:00 (14d retention)2026-04-11T20:36:53.215520ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538,trigger=click)2026-04-11T20:37:03.5494672INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1247300013418283538, trigger=click)2026-04-11T20:37:09.670722ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames2026-04-11T20:37:11.207501ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.3MB → 1.2MB (4.5x), 24 JPEGs deleted2026-04-11T20:37:44.461189ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-259750597993296433, trigger=click)2026-04-11T20:37:58.4086082INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4847561377089731380, trigger=click)...
|
1551
|