|
71195
|
NULL
|
0
|
2026-05-22T11:29:33.992181+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449373992_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449373992_m1.jpg...
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop","depth":4,"on_screen":true,"value":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.0013888889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.16180556,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16597222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3263889,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33055556,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.490625,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6548611,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.65902776,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ssh","depth":2,"bounds":{"left":0.8190972,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8232639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48680556,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-1384121224300357177
|
4355975944206429543
|
typing_pause
|
accessibility
|
NULL
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71194
|
NULL
|
0
|
2026-05-22T11:29:32.981695+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449372981_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449372981_m1.jpg...
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp","depth":4,"on_screen":true,"value":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.0013888889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.16180556,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16597222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3263889,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33055556,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.490625,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6548611,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.65902776,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ssh","depth":2,"bounds":{"left":0.8190972,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8232639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48680556,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-2439992435974113610
|
4355975944206429543
|
typing_pause
|
accessibility
|
NULL
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
71193
|
NULL
|
NULL
|
NULL
|
|
71193
|
NULL
|
0
|
2026-05-22T11:29:31.881246+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449371881_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449371881_m1.jpg...
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s","depth":4,"on_screen":true,"value":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.0013888889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.16180556,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16597222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3263889,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33055556,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.490625,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6548611,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.65902776,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ssh","depth":2,"bounds":{"left":0.8190972,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8232639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48680556,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
5953142842603897926
|
4355975944206429543
|
typing_pause
|
accessibility
|
NULL
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71192
|
NULL
|
0
|
2026-05-22T11:29:29.083440+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449369083_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449369083_m1.jpg...
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"on_screen":true,"value":"Last login: Wed May 20 09:14:49 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n4.8G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:34:48] ========================================\n[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:34:48] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18\n[2026-05-20 19:35:01] ========================================\n[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18\n[2026-05-20 19:35:01] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.6G)\n Data dir: OK (168 files, 403M)\n\n[+00m00s] ▶ Counting source rows for 2026-05-18\n frames: 6300\n elements: 758820\n ui_events: 4662\n ocr_text: 2983\n meetings: 0\n audio_chunks: 172\n audio_transcriptions: 287\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing vision data for 2026-05-18\n video_chunks ✓ 0m03s\n frames (6300 rows) ✓ 0m50s\n ocr_text (2983 rows) ✓ 1m05s\n ui_events (4662 rows) ✓ 0m00s\n elements (758820 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m01s\n\n[+02m39s] ▶ Syncing audio data for 2026-05-18\n audio_chunks (172 rows) ✓ 0m00s\n audio_transcriptions (287 rows) ✓ 0m00s\n\n[+02m39s] ▶ Updating FTS indexes\n elements_fts ✓ 1m16s\n frames_fts ✓ 1m44s\n ui_events_fts ✓ 0m02s\n audio_transcriptions_fts ✓ 0m01s\n\n[+05m42s] ▶ Verifying DB\n frames: 6300 / 6300 ✓\n elements: 758820 / 758820 ✓\n ui_events: 4662 / 4662 ✓\n ocr_text: 2983 / 2983 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 172 / 172 ✓\n audio_transcriptions: 287 / 287 ✓\n\n[+06m48s] ▶ Copying data folder for 2026-05-18\n rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)\n\n[+07m12s] ▶ Copying audio files for 2026-05-18\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K\n rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K\n rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K\n rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K\n rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K\n rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K\n rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K\n rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K\n rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K\n rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K\n rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K\n rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K\n rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K\n rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K\n rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K\n rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K\n audio files total: 172 file(s), 42M\n\n[+07m24s] ▶ Copying screenpipe logs for 2026-05-18\n rsync logs → NAS ✓ 1 file(s), 308K\n\n[2026-05-20 19:42:25] Archive DB size: 7.4G\n[2026-05-20 19:42:25] Total time: 7m24s\n[2026-05-20 19:42:25] Sync complete for 2026-05-18\n[2026-05-20 19:42:25] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19\n[2026-05-20 20:35:14] ========================================\n[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19\n[2026-05-20 20:35:14] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (3.4G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.4G)\n Data dir: OK (201 files, 190M)\n\n[+00m01s] ▶ Counting source rows for 2026-05-19\n frames: 3796\n elements: 544355\n ui_events: 4277\n ocr_text: 2040\n meetings: 0\n audio_chunks: 122\n audio_transcriptions: 808\n\n[+00m02s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing vision data for 2026-05-19\n video_chunks ✓ 0m03s\n frames (3796 rows) ✓ 0m40s\n ocr_text (2040 rows) ✓ 0m50s\n ui_events (4277 rows) ✓ 0m01s\n elements (544355 rows) ✓ 0m31s\n meetings (0 rows) ✓ 0m00s\n\n[+02m07s] ▶ Syncing audio data for 2026-05-19\n audio_chunks (122 rows) ✓ 0m01s\n audio_transcriptions (808 rows) ✓ 0m00s\n\n[+02m08s] ▶ Updating FTS indexes\n elements_fts ✓ 1m05s\n frames_fts ✓ 1m30s\n ui_events_fts ✓ 0m03s\n audio_transcriptions_fts ✓ 0m01s\n\n[+04m47s] ▶ Verifying DB\n frames: 3796 / 3796 ✓\n elements: 544355 / 544355 ✓\n ui_events: 4277 / 4277 ✓\n ocr_text: 2040 / 2040 ✓\n meetings: 0 / 0 ✓\n audio_chunks: 122 / 122 ✓\n audio_transcriptions: 808 / 808 ✓\n\n[+05m59s] ▶ Copying data folder for 2026-05-19\n rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)\n\n[+06m15s] ▶ Copying audio files for 2026-05-19\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K\n rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K\n rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K\n rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K\n rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K\n rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K\n rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K\n rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K\n rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K\n rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K\n rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K\n rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K\n rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K\n rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K\n rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K\n rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K\n rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K\n rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K\n rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K\n rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K\n rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K\n audio files total: 122 file(s), 26M\n\n[+06m22s] ▶ Copying screenpipe logs for 2026-05-19\n rsync logs → NAS ✓ 1 file(s), 328K\n\n[2026-05-20 20:41:36] Archive DB size: 7.9G\n[2026-05-20 20:41:36] Total time: 6m22s\n[2026-05-20 20:41:36] Sync complete for 2026-05-19\n[2026-05-20 20:41:36] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv\nmake: *** No rule to make target `checkEnv'. Stop.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv\ndocker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker=\"earth\"\nBefore:\n+---------+--------------------------------------------------------------------+\n| Key | Value |\n+---------+--------------------------------------------------------------------+\n| qa | free |\n| saturn | free |\n| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |\n| venus | JY-20543-AJ-report-tracking |\n| mars | JY-20742-mcp-poc-OAuth-DCR |\n| mercury | JY-20741-user-can-log-in-access-the-desktop-app |\n| neptune | JY-20676-delete-report-related-objects |\n| earth | free |\n| jupiter | free |\n| staging | JY-18091-upgrade-to-php-8-5 |\n+---------+--------------------------------------------------------------------+\nBye.\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST http://localhost:11434/api/generate -d '{\n \"model\": \"gemma4:32b\", // Replace with the model you have downloaded (e.g., llama3, mistral)\n \"prompt\": \"Write a short poem about self-hosting AI.\",\n \"stream\": false\n}'\ncurl: (7) Failed to connect to localhost port 11434 after 0 ms: Couldn't connect to server\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20\n[2026-05-22 10:31:19] ========================================\n[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20\n[2026-05-22 10:31:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (4.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (7.9G)\n Data dir: OK (170 files, 231M)\n\n[+00m06s] ▶ Counting source rows for 2026-05-20\n frames: 5860\n elements: 588259\n ui_events: 4035\n ocr_text: 1351\n meetings: 0\n audio_chunks: 38\n audio_transcriptions: 234\n\n[+00m06s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m01s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m07s] ▶ Syncing vision data for 2026-05-20\n video_chunks ✓ 0m01s\n frames (5860 rows) ✓ 1m06s\n ocr_text (1351 rows) ✓ 0m32s\n ui_events (4035 rows) ✓ 0m01s\n elements (588259 rows) ✓ 0m38s\n meetings (0 rows) ✓ 0m00s\n\n[+02m25s] ▶ Syncing audio data for 2026-05-20\n audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nsqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_chunks\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_transcriptions\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speakers\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema speaker_embeddings\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".schema audio_tags\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db \".schema audio_chunks\"\nCREATE TABLE audio_chunks(\n id INT,\n file_path TEXT,\n timestamp NUM,\n sync_id TEXT,\n machine_id TEXT,\n synced_at NUM,\n evicted_at NUM\n);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite \".tables\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 8372840\ndrwxr-xr-x 34 lukas staff 1088 22 May 10:35 .\ndrwx------+ 96 lukas staff 3072 21 May 19:48 ..\n-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store\n-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id\n-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight\ndrwxr-xr-x 601 lukas staff 19232 22 May 10:47 data\n-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes\n-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log\n-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log\n-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log\n-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log\n-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log\n-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log\n-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log\n-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log\n-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log\n-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log\n-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log\n-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log\n-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log\n-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log\n-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log\n-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log\n-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log\n-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh\n-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk\n-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak\n-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2\ndrwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts\n-rw------- 1 lukas staff 1767 19 May 09:30 store.bin\n-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\" \n_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 \ndiarization_runs pipe_scheduler_state \ndiarization_segments secrets \nelements speaker_embeddings \nelements_fts speaker_identity_evidence \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_data ui_events_fts_idx \nframes_fts_docsize video_chunks \nframes_fts_idx vision_tags \nmeeting_transcript_segments \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema audio_chunks\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speakers\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema speaker_embeddings\" \nsqlite3 ~/.screenpipe/db.sqlite \".schema audio_tags\" \nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT\n NOT NULL DEFAULT 'pending'\n CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER\n NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE INDEX idx_audio_chunks_pending_timestamp\n ON audio_chunks(timestamp)\n WHERE transcription_status = 'pending';\nCREATE INDEX idx_audio_chunks_status\n ON audio_chunks(transcription_status);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_speaker_id_timestamp\n ON audio_transcriptions(speaker_id, timestamp DESC);\nCREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL,\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE INDEX idx_speaker_embeddings_speaker_id\n ON speaker_embeddings(speaker_id);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.0013888889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.16180556,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16597222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3263889,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33055556,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.490625,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6548611,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.65902776,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ssh","depth":2,"bounds":{"left":0.8190972,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8232639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48680556,"top":0.033333335,"width":0.022916667,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
1574809818300579953
|
4355975944206429543
|
click
|
accessibility
|
NULL
|
Last login: Wed May 20 09:14:49 on ttys009
Poetry Last login: Wed May 20 09:14:49 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
4.8G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:34:48] ========================================
[2026-05-20 19:34:48] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:34:48] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
[2026-05-20 19:34:48] ERROR: NAS not mounted at /Volumes/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-18
[2026-05-20 19:35:01] ========================================
[2026-05-20 19:35:01] Screenpipe sync starting for: 2026-05-18
[2026-05-20 19:35:01] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.6G)
Data dir: OK (168 files, 403M)
[+00m00s] ▶ Counting source rows for 2026-05-18
frames: 6300
elements: 758820
ui_events: 4662
ocr_text: 2983
meetings: 0
audio_chunks: 172
audio_transcriptions: 287
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m01s] ▶ Syncing vision data for 2026-05-18
video_chunks ✓ 0m03s
frames (6300 rows) ✓ 0m50s
ocr_text (2983 rows) ✓ 1m05s
ui_events (4662 rows) ✓ 0m00s
elements (758820 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m01s
[+02m39s] ▶ Syncing audio data for 2026-05-18
audio_chunks (172 rows) ✓ 0m00s
audio_transcriptions (287 rows) ✓ 0m00s
[+02m39s] ▶ Updating FTS indexes
elements_fts ✓ 1m16s
frames_fts ✓ 1m44s
ui_events_fts ✓ 0m02s
audio_transcriptions_fts ✓ 0m01s
[+05m42s] ▶ Verifying DB
frames: 6300 / 6300 ✓
elements: 758820 / 758820 ✓
ui_events: 4662 / 4662 ✓
ocr_text: 2983 / 2983 ✓
meetings: 0 / 0 ✓
audio_chunks: 172 / 172 ✓
audio_transcriptions: 287 / 287 ✓
[+06m48s] ▶ Copying data folder for 2026-05-18
rsync 2026-05-18/ → NAS ✓ 0m24s (168 files, 403M)
[+07m12s] ▶ Copying audio files for 2026-05-18
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-17.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-18_06-37-47.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-42-54.mp4 → NAS ✓ 212K
rsync System Audio (output)_2026-05-18_06-45-44.mp4 → NAS ✓ 42K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-45-53.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-46-14.mp4 → NAS ✓ 143K
rsync System Audio (output)_2026-05-18_06-46-44.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-18_06-47-12.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-18_06-47-42.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-48-12.mp4 → NAS ✓ 237K
rsync System Audio (output)_2026-05-18_06-48-41.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_06-49-10.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_06-49-40.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-50-08.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_06-50-34.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-18_06-51-03.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-18_06-51-32.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-18_06-52-00.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-20.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_06-52-28.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-52-50.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-52-57.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_06-53-26.mp4 → NAS ✓ 231K
rsync System Audio (output)_2026-05-18_06-53-56.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-54-25.mp4 → NAS ✓ 243K
rsync System Audio (output)_2026-05-18_06-54-55.mp4 → NAS ✓ 252K
rsync System Audio (output)_2026-05-18_06-55-23.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-55-49.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-19.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_06-56-21.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-56-49.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_06-56-50.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-18_06-57-20.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-57-48.mp4 → NAS ✓ 58K
rsync System Audio (output)_2026-05-18_06-58-16.mp4 → NAS ✓ 109K
rsync System Audio (output)_2026-05-18_06-58-43.mp4 → NAS ✓ 199K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-58-48.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_06-59-10.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_06-59-17.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_06-59-39.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-18_07-00-08.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-18_07-00-37.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-00-47.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-18_07-01-07.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-17.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-18_07-01-37.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-01-47.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-02-07.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-02-36.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-02-47.mp4 → NAS ✓ 405K
rsync System Audio (output)_2026-05-18_07-03-06.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-17.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-03-36.mp4 → NAS ✓ 229K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-03-47.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-18_07-04-04.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-04-33.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-04-46.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-05-02.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-16.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-05-32.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-05-46.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-18_07-06-02.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-18_07-06-32.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-06-46.mp4 → NAS ✓ 217K
rsync System Audio (output)_2026-05-18_07-07-01.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-18_07-07-31.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-18_07-08-01.mp4 → NAS ✓ 212K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-18_07-08-31.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-08-46.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-18_07-09-01.mp4 → NAS ✓ 201K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-16.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-09-31.mp4 → NAS ✓ 192K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-09-46.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-18_07-10-00.mp4 → NAS ✓ 185K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-16.mp4 → NAS ✓ 227K
rsync System Audio (output)_2026-05-18_07-10-29.mp4 → NAS ✓ 204K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-10-46.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-18_07-10-59.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-16.mp4 → NAS ✓ 236K
rsync System Audio (output)_2026-05-18_07-11-29.mp4 → NAS ✓ 175K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-11-46.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-18_07-11-59.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-16.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-18_07-12-29.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-12-46.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_07-12-58.mp4 → NAS ✓ 109K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-13-16.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-15-45.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-18-45.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-19-15.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-25-44.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-42-41.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-44-11.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-45-11.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-47-40.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-51-40.mp4 → NAS ✓ 193K
rsync LakyLak bose qc35 II (input)_2026-05-18_07-55-10.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-09.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-02-39.mp4 → NAS ✓ 202K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-08-39.mp4 → NAS ✓ 200K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-09.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-14-39.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-25-38.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-26-08.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-29-38.mp4 → NAS ✓ 206K
rsync LakyLak bose qc35 II (input)_2026-05-18_08-31-08.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-57-32.mp4 → NAS ✓ 218K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-02.mp4 → NAS ✓ 604K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-58-32.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_09-59-02.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-00-31.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-01-01.mp4 → NAS ✓ 657K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-02-31.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-01.mp4 → NAS ✓ 661K
rsync LakyLak bose qc35 II (input)_2026-05-18_10-03-31.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-01.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-07-31.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-01.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-08-31.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-01.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-09-31.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-10-01.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-15-00.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-29.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-19-59.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-29.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-20-59.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-21-29.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-36-57.mp4 → NAS ✓ 226K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-27.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-37-56.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-38-56.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-39-56.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-40-26.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-47-55.mp4 → NAS ✓ 211K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-24.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-48-54.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-49-54.mp4 → NAS ✓ 414K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-24.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-50-54.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-24.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-51-54.mp4 → NAS ✓ 215K
rsync LakyLak bose qc35 II (input)_2026-05-18_12-53-24.mp4 → NAS ✓ 607K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-00-52.mp4 → NAS ✓ 3.0M
rsync LakyLak bose qc35 II (input)_2026-05-18_13-11-50.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-12-20.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-13-20.mp4 → NAS ✓ 230K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-19-49.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-19.mp4 → NAS ✓ 794K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-25-49.mp4 → NAS ✓ 232K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-18.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-26-48.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-27-18.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-28-18.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-33-48.mp4 → NAS ✓ 207K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-34-18.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-36-18.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-38-47.mp4 → NAS ✓ 780K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-17.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-39-47.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-40-17.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-46-47.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-47-17.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-17.mp4 → NAS ✓ 250K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-49-47.mp4 → NAS ✓ 210K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-52-16.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-56-46.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-18_13-57-16.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-18_16-39-09.mp4 → NAS ✓ 11K
audio files total: 172 file(s), 42M
[+07m24s] ▶ Copying screenpipe logs for 2026-05-18
rsync logs → NAS ✓ 1 file(s), 308K
[2026-05-20 19:42:25] Archive DB size: 7.4G
[2026-05-20 19:42:25] Total time: 7m24s
[2026-05-20 19:42:25] Sync complete for 2026-05-18
[2026-05-20 19:42:25] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-19
[2026-05-20 20:35:14] ========================================
[2026-05-20 20:35:14] Screenpipe sync starting for: 2026-05-19
[2026-05-20 20:35:14] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (3.4G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.4G)
Data dir: OK (201 files, 190M)
[+00m01s] ▶ Counting source rows for 2026-05-19
frames: 3796
elements: 544355
ui_events: 4277
ocr_text: 2040
meetings: 0
audio_chunks: 122
audio_transcriptions: 808
[+00m02s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing vision data for 2026-05-19
video_chunks ✓ 0m03s
frames (3796 rows) ✓ 0m40s
ocr_text (2040 rows) ✓ 0m50s
ui_events (4277 rows) ✓ 0m01s
elements (544355 rows) ✓ 0m31s
meetings (0 rows) ✓ 0m00s
[+02m07s] ▶ Syncing audio data for 2026-05-19
audio_chunks (122 rows) ✓ 0m01s
audio_transcriptions (808 rows) ✓ 0m00s
[+02m08s] ▶ Updating FTS indexes
elements_fts ✓ 1m05s
frames_fts ✓ 1m30s
ui_events_fts ✓ 0m03s
audio_transcriptions_fts ✓ 0m01s
[+04m47s] ▶ Verifying DB
frames: 3796 / 3796 ✓
elements: 544355 / 544355 ✓
ui_events: 4277 / 4277 ✓
ocr_text: 2040 / 2040 ✓
meetings: 0 / 0 ✓
audio_chunks: 122 / 122 ✓
audio_transcriptions: 808 / 808 ✓
[+05m59s] ▶ Copying data folder for 2026-05-19
rsync 2026-05-19/ → NAS ✓ 0m16s (201 files, 190M)
[+06m15s] ▶ Copying audio files for 2026-05-19
rsync LakyLak bose qc35 II (input)_2026-05-19_06-39-26.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-19_06-45-15.mp4 → NAS ✓ 141K
rsync System Audio (output)_2026-05-19_06-45-44.mp4 → NAS ✓ 57K
rsync System Audio (output)_2026-05-19_06-46-14.mp4 → NAS ✓ 191K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-46-28.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_06-46-44.mp4 → NAS ✓ 216K
rsync System Audio (output)_2026-05-19_06-47-14.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_06-47-44.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_06-48-14.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-19_06-48-43.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_06-49-13.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_06-49-43.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-50-13.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-50-43.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-19_06-51-12.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-51-42.mp4 → NAS ✓ 245K
rsync System Audio (output)_2026-05-19_06-52-12.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_06-52-42.mp4 → NAS ✓ 246K
rsync System Audio (output)_2026-05-19_06-53-12.mp4 → NAS ✓ 224K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-27.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-53-42.mp4 → NAS ✓ 195K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-53-57.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-19_06-54-12.mp4 → NAS ✓ 214K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-54-27.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-19_06-54-42.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_06-55-12.mp4 → NAS ✓ 209K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-55-27.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-19_06-55-42.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-19_06-56-12.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-19_06-56-42.mp4 → NAS ✓ 249K
rsync System Audio (output)_2026-05-19_06-57-11.mp4 → NAS ✓ 255K
rsync System Audio (output)_2026-05-19_06-57-41.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_06-58-11.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-27.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_06-58-41.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_06-58-57.mp4 → NAS ✓ 222K
rsync System Audio (output)_2026-05-19_06-59-11.mp4 → NAS ✓ 224K
rsync System Audio (output)_2026-05-19_06-59-41.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-00-09.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-00-38.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-01-08.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-26.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-19_07-01-37.mp4 → NAS ✓ 179K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-01-56.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-19_07-02-07.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-02-26.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-19_07-02-37.mp4 → NAS ✓ 241K
rsync System Audio (output)_2026-05-19_07-03-07.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-26.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-03-36.mp4 → NAS ✓ 217K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-03-56.mp4 → NAS ✓ 235K
rsync System Audio (output)_2026-05-19_07-04-06.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-25.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-04-36.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-04-55.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-19_07-05-05.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-25.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-05-35.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-05-55.mp4 → NAS ✓ 221K
rsync System Audio (output)_2026-05-19_07-06-04.mp4 → NAS ✓ 219K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-25.mp4 → NAS ✓ 244K
rsync System Audio (output)_2026-05-19_07-06-34.mp4 → NAS ✓ 197K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-06-55.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-19_07-07-04.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-25.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-19_07-07-34.mp4 → NAS ✓ 213K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-07-55.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-19_07-08-04.mp4 → NAS ✓ 230K
rsync System Audio (output)_2026-05-19_07-08-33.mp4 → NAS ✓ 234K
rsync System Audio (output)_2026-05-19_07-09-03.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-19_07-09-30.mp4 → NAS ✓ 222K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-09-53.mp4 → NAS ✓ 240K
rsync System Audio (output)_2026-05-19_07-09-58.mp4 → NAS ✓ 223K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-23.mp4 → NAS ✓ 233K
rsync System Audio (output)_2026-05-19_07-10-27.mp4 → NAS ✓ 225K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-10-52.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-10-57.mp4 → NAS ✓ 208K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-22.mp4 → NAS ✓ 242K
rsync System Audio (output)_2026-05-19_07-11-27.mp4 → NAS ✓ 203K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-11-52.mp4 → NAS ✓ 229K
rsync System Audio (output)_2026-05-19_07-11-56.mp4 → NAS ✓ 55K
rsync LakyLak bose qc35 II (input)_2026-05-19_07-12-52.mp4 → NAS ✓ 230K
rsync MacBook Pro Microphone (input)_2026-05-19_07-15-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-21.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-16-51.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_07-17-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_07-19-21.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-31-15.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_07-56-41.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-19_08-10-36.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-04.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-19_08-21-34.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-03.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-19_08-22-33.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-03.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_08-23-33.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-03.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-19_08-24-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_08-25-03.mp4 → NAS ✓ 217K
rsync MacBook Pro Microphone (input)_2026-05-19_08-45-58.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_08-55-25.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_08-57-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-24.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_08-58-54.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-19_08-59-24.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-19_09-00-24.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_09-43-17.mp4 → NAS ✓ 228K
rsync MacBook Pro Microphone (input)_2026-05-19_09-44-45.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-14.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-19_09-45-44.mp4 → NAS ✓ 214K
rsync MacBook Pro Microphone (input)_2026-05-19_10-10-33.mp4 → NAS ✓ 220K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-19_10-11-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-02.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-19_10-12-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-01.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-19_10-13-31.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-01.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-19_10-14-31.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-19_10-15-01.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-19_11-27-17.mp4 → NAS ✓ 212K
audio files total: 122 file(s), 26M
[+06m22s] ▶ Copying screenpipe logs for 2026-05-19
rsync logs → NAS ✓ 1 file(s), 328K
[2026-05-20 20:41:36] Archive DB size: 7.9G
[2026-05-20 20:41:36] Total time: 6m22s
[2026-05-20 20:41:36] Sync complete for 2026-05-19
[2026-05-20 20:41:36] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ make checkEnv
make: *** No rule to make target `checkEnv'. Stop.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ make checkEnv
docker exec -it docker_lamp_1 php artisan jiminny:env:pipe --checkOnly --marker="earth"
Before:
+---------+--------------------------------------------------------------------+
| Key | Value |
+---------+--------------------------------------------------------------------+
| qa | free |
| saturn | free |
| uranus | JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details |
| venus | JY-20543-AJ-report-tracking |
| mars | JY-20742-mcp-poc-OAuth-DCR |
| mercury | JY-20741-user-can-log-in-access-the-desktop-app |
| neptune | JY-20676-delete-report-related-objects |
| earth | free |
| jupiter | free |
| staging | JY-18091-upgrade-to-php-8-5 |
+---------+--------------------------------------------------------------------+
Bye.
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ curl -X POST [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-20
[2026-05-22 10:31:19] ========================================
[2026-05-22 10:31:19] Screenpipe sync starting for: 2026-05-20
[2026-05-22 10:31:19] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (7.9G)
Data dir: OK (170 files, 231M)
[+00m06s] ▶ Counting source rows for 2026-05-20
frames: 5860
elements: 588259
ui_events: 4035
ocr_text: 1351
meetings: 0
audio_chunks: 38
audio_transcriptions: 234
[+00m06s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m01s
creating indexes ✓ 0m00s
creating FTS tables ✓ 0m00s
[+00m07s] ▶ Syncing vision data for 2026-05-20
video_chunks ✓ 0m01s
frames (5860 rows) ✓ 1m06s
ocr_text (1351 rows) ✓ 0m32s
ui_events (4035 rows) ✓ 0m01s
elements (588259 rows) ✓ 0m38s
meetings (0 rows) ✓ 0m00s
[+02m25s] ▶ Syncing audio data for 2026-05-20
audio_chunks (38 rows) ⠋ Parse error near line 3: table nas.audio_chunks has 7 columns but 11 values were supplied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_chunks"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_transcriptions"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speakers"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema speaker_embeddings"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".schema audio_tags"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 /Volumes/screenpipe/archive.db ".schema audio_chunks"
CREATE TABLE audio_chunks(
id INT,
file_path TEXT,
timestamp NUM,
sync_id TEXT,
machine_id TEXT,
synced_at NUM,
evicted_at NUM
);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ sqlite3 ~/.screenpipe/data/db.sqlite ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 8372840
drwxr-xr-x 34 lukas staff 1088 22 May 10:35 .
drwx------+ 96 lukas staff 3072 21 May 19:48 ..
-rw-r--r--@ 1 lukas staff 10244 16 May 16:46 .DS_Store
-rw-r--r--@ 1 lukas staff 37 11 May 20:54 .sync_install_id
-rw-r--r-- 1 lukas staff 5 22 May 10:35 clipboard-read-inflight
drwxr-xr-x 601 lukas staff 19232 22 May 10:47 data
-rw-r--r--@ 1 lukas staff 4265005056 22 May 10:45 db.sqlite
-rw-r--r-- 1 lukas staff 65536 22 May 10:34 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16529472 22 May 10:47 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 10 May 11:39 pipes
-rw-r--r--@ 1 lukas staff 378916 18 May 20:06 prune.log
-rw-r--r-- 1 lukas staff 28408 6 May 21:02 screenpipe.2026-05-06.0.log
-rw-r--r-- 1 lukas staff 566164 7 May 21:50 screenpipe.2026-05-07.0.log
-rw-r--r-- 1 lukas staff 382102 8 May 22:20 screenpipe.2026-05-08.0.log
-rw-r--r-- 1 lukas staff 167023 9 May 23:04 screenpipe.2026-05-09.0.log
-rw-r--r-- 1 lukas staff 88266 10 May 23:51 screenpipe.2026-05-10.0.log
-rw-r--r-- 1 lukas staff 528943 11 May 22:54 screenpipe.2026-05-11.0.log
-rw-r--r-- 1 lukas staff 294131 12 May 21:46 screenpipe.2026-05-12.0.log
-rw-r--r-- 1 lukas staff 449051 13 May 20:51 screenpipe.2026-05-13.0.log
-rw-r--r-- 1 lukas staff 319916 14 May 18:29 screenpipe.2026-05-14.0.log
-rw-r--r-- 1 lukas staff 201533 15 May 14:21 screenpipe.2026-05-15.0.log
-rw-r--r-- 1 lukas staff 24231 16 May 16:08 screenpipe.2026-05-16.0.log
-rw-r--r-- 1 lukas staff 314727 18 May 19:39 screenpipe.2026-05-18.0.log
-rw-r--r-- 1 lukas staff 333223 19 May 18:57 screenpipe.2026-05-19.0.log
-rw-r--r-- 1 lukas staff 287008 20 May 19:32 screenpipe.2026-05-20.0.log
-rw-r--r-- 1 lukas staff 267134 21 May 18:06 screenpipe.2026-05-21.0.log
-rw-r--r-- 1 lukas staff 76308 22 May 10:47 screenpipe.2026-05-22.0.log
-rwxr-xr-x@ 1 lukas staff 18401 12 May 21:28 screenpipe_sync.sh
-rwxr-xr-x@ 1 lukas staff 32005 11 May 20:54 screenpipe_sync.sh-bakk
-rwxr-xr-x@ 1 lukas staff 14994 6 May 20:26 screenpipe_sync.sh.bak
-rwxr-xr-x@ 1 lukas staff 21485 10 May 13:34 screenpipe_sync.sh.bak2
drwxr-xr-x 7 lukas staff 224 18 May 20:01 scripts
-rw------- 1 lukas staff 1767 19 May 09:30 store.bin
-rw-r--r--@ 1 lukas staff 120693 22 May 10:33 sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_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
diarization_runs pipe_scheduler_state
diarization_segments secrets
elements speaker_embeddings
elements_fts speaker_identity_evidence
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_data ui_events_fts_idx
frames_fts_docsize video_chunks
frames_fts_idx vision_tags
meeting_transcript_segments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema audio_chunks"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_transcriptions"
sqlite3 ~/.screenpipe/db.sqlite ".schema speakers"
sqlite3 ~/.screenpipe/db.sqlite ".schema speaker_embeddings"
sqlite3 ~/.screenpipe/db.sqlite ".schema audio_tags"
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME, evicted_at TIMESTAMP DEFAULT NULL, transcription_status TEXT
NOT NULL DEFAULT 'pending'
CHECK (transcription_status IN ('pending', 'transcribed', 'silent', 'failed')), transcription_attempts INTEGER
NOT NULL DEFAULT 0, last_transcription_attempt_at TIMESTAMP, transcription_failure_reason TEXT);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE INDEX idx_audio_chunks_pending_timestamp
ON audio_chunks(timestamp)
WHERE transcription_status = 'pending';
CREATE INDEX idx_audio_chunks_status
ON audio_chunks(transcription_status);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME, redacted_at INTEGER,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_speaker_id_timestamp
ON audio_transcriptions(speaker_id, timestamp DESC);
CREATE INDEX idx_audio_transcriptions_redacted_at ON audio_transcriptions(redacted_at);
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL,
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE INDEX idx_speaker_embeddings_speaker_id
ON speaker_embeddings(speaker_id);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ssh
Close Tab
⌥⌘1
-zsh...
|
71191
|
NULL
|
NULL
|
NULL
|
|
71191
|
NULL
|
0
|
2026-05-22T11:29:27.749051+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449367749_m1.jpg...
|
iTerm2
|
APP (-zsh)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449367749_m1.jpg...
|
Last login: Wed May 20 09:14:49 on ttys007
Poetry Last login: Wed May 20 09:14:49 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5689/5689 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5689 files in 34.956 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] -9,11 +9,7 @@
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
-use Illuminate\Support\Facades\Queue;
-use Illuminate\Support\Facades\DB;
use Jiminny\Services\Mail\TextRelayService;
-use Jiminny\Models\TextRelay;
-use Jiminny\Jobs\Mailbox\EmailTextRelay;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
----------- end diff -----------
Fixed 1 of 5689 files in 44.720 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull
remote: Enumerating objects: 1400, done.
remote: Counting objects: 100% (775/775), done.
remote: Compressing objects: 100% (116/116), done.
remote: Total 1400 (delta 692), reused 662 (delta 659), pack-reused 625 (from 3)
Receiving objects: 100% (1400/1400), 950.35 KiB | 2.21 MiB/s, done.
Resolving deltas: 100% (878/878), completed with 225 local objects.
From github.com:jiminny/app
d5a447e492..c4e163f3e7 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
0b8343d179..32cf0db4fb JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
56ca84fabd..3f5f9b21c7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects
2b5e6ea62b..6fa3fead5a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
045ab2e174..729a39244d JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents
* [new branch] JY-20920-participant-matching-exclusive-mechanism -> origin/JY-20920-participant-matching-exclusive-mechanism
177ea29b8d..a873f0cbce master -> origin/master
Merge made by the 'ort' strategy.
app/Component/ES/AsyncUpdateElasticSearch.php | 27 +++++----
app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 48 ---------------
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++------
app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++-------
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 ++++++++--
app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++
app/Component/ES/UpdateProcessManager.php | 21 ++++---
app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 +++++++++++----
app/Component/ParticipantSpeech/Services/ParticipantAttributionService.php | 4 +-
app/Component/Settings/AutoScoring/Services/UpdateAutoScoreService.php | 20 +++----
app/Component/Transcription/Service/StorageService.php | 8 +--
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-
app/Exceptions/RateLimitException.php | 19 +++++-
app/Jobs/Crm/MatchActivityCrmData.php | 47 +++++++++++----
app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 ++++++++++++++
app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-
app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-
app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-
app/Services/Activity/HubSpot/Service.php | 97 ++++++++++++++++++++++++++-----
app/Services/Crm/Hubspot/Client.php | 132 ++++++++++++++++++++++++++++++++++++++++++
app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 +++++
app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 +++----
app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++-----
front-end/package.json | 2 +-
front-end/yarn.lock | 8 +--
routes/api.php | 7 ++-
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 ++++++--
tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php | 42 --------------
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 ++---
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++---------------
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +--
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++-----
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 ++++++++++++++++++++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++---
tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 +++++++++++++++++++++-
tests/Unit/Component/Settings/AutoScoring/Services/UpdateAutoScoreServiceTest.php | 86 +++++++++++++++------------
tests/Unit/Component/Transcription/Service/StorageServiceTest.php | 29 +++-------
tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 ++++++++++++++++++
tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--
tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 ++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++----------------------------------------------------------------------
52 files changed, 1632 insertions(+), 631 deletions(-)
delete mode 100644 app/Component/ES/ElasticSearchDocumentPartialUpdater.php
create mode 100644 app/Component/ES/QueuePriorityEnum.php
create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php
delete mode 100644 tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php
create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php
create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php
create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push
Enumerating objects: 19, done.
Counting objects: 100% (16/16), done.
Delta compression using up to 8 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 844 bytes | 844.00 KiB/s, done.
Total 9 (delta 6), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (6/6), completed with 5 local objects.
To github.com:jiminny/app.git
c4e163f3e7..f885e531ab JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status
On branch JY-20915-add-domain-specific-email-text-relay
Your branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: tests/Unit/Notifications/Activities/SmsReceivedTest.php
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5690 files in 76.177 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status
On branch JY-20676-delete-report-related-objects
Your branch is behind 'origin/JY-20676-delete-report-related-objects' by 48 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ git pull
remote: Enumerating objects: 157, done.
remote: Counting objects: 100% (157/157), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 157 (delta 120), reused 147 (delta 115), pack-reused 0 (from 0)
Receiving objects: 100% (157/157), 24.95 KiB | 1.78 MiB/s, done.
Resolving deltas: 100% (120/120), completed with 37 local objects.
From github.com:jiminny/app
3f5f9b21c7..202ab55be7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects
3642c9384c..cf70da243a JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
* [new branch] JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue
* [new branch] JY-20930-ringcentral-disconnected-crm -> origin/JY-20930-ringcentral-disconnected-crm
a873f0cbce..71b36decb6 master -> origin/master
Updating 56ca84fabd..202ab55be7
Fast-forward
app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++++++++------
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++++-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++++++++++++++++----------
app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++++++++-------------
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++++++++++---
app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++++++++++++
app/Component/ES/UpdateProcessManager.php | 21 +++++++------
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++++--
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +++-
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++++++++++++---------
app/Services/RecallAI/RecallAIService.php | 11 +++++++
front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +
front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 +++++++++++++++++++++++++++++++----
front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++++++++++++++++++++++----------
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++++++++---
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +++-------
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +++---
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++++++++---------
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++++------
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++++++++++++++++++
24 files changed, 619 insertions(+), 196 deletions(-)
create mode 100644 app/Component/ES/QueuePriorityEnum.php
create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5690 files in 78.144 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-f.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-f.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-f.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-f.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-b.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-b.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-b.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-b.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/vin.HEIC --out ~/Downloads/Photos-3-001\(2\)/vin.png
/Users/lukas/Downloads/Photos-3-001(2)/vin.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/vin.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/dr-lic-f.HEIC --out ~/Downloads/Photos-3-001\(2\)/dr-lic-f.png
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/dr-lic-b.HEIC --out ~/Downloads/Photos-3-001\(2\)/dr-lic-b.png
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/gtp.HEIC --out ~/Downloads/Photos-3-001\(2\)/gtp.png
Warning: /Users/lukas/Downloads/Photos-3-001(2)/gtp.HEIC not a valid file - skipping
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/gtp.heif --out ~/Downloads/Photos-3-001\(2\)/gtp.png
/Users/lukas/Downloads/Photos-3-001(2)/gtp.heif
/Users/lukas/Downloads/Photos-3-001(2)/gtp.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-m-f.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-m-f.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-m-b.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-m-b.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status
On branch JY-20915-add-domain-specific-email-text-relay
Your branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git pull
remote: Enumerating objects: 445, done.
remote: Counting objects: 100% (265/265), done.
remote: Compressing objects: 100% (64/64), done.
remote: Total 445 (delta 214), reused 210 (delta 198), pack-reused 180 (from 2)
Receiving objects: 100% (445/445), 151.54 KiB | 1.43 MiB/s, done.
Resolving deltas: 100% (285/285), completed with 67 local objects.
From github.com:jiminny/app
d3ee1a203b..caba325b1a JY-20915-add-domain-specific-email-text-relay -> origin/JY-20915-add-domain-specific-email-text-relay
32cf0db4fb..8960f61b14 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
4642fad114..168f64052c JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall
4f15440265..f2221ddb54 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects
* [new branch] JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
3eb70f7a73..a968dd2968 JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue
6fa3fead5a..3347ccc179 JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
+ 1ac8a06aed...847efe844f JY-20853-mcp-seach_calls -> origin/JY-20853-mcp-seach_calls (forced update)
* [new branch] JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings
* [new branch] JY-20947-twilio-video-downloads -> origin/JY-20947-twilio-video-downloads
71b36decb6..6818adf8e2 master -> origin/master
Updating d3ee1a203b..caba325b1a
Fast-forward
app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++---
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 ++-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++----
app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++-----
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++-
app/Component/ES/QueuePriorityEnum.php | 40 ++++++++++
app/Component/ES/UpdateProcessManager.php | 21 ++---
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 ++-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-
app/DTO/Invitation/UserInvitationDTO.php | 8 +-
app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +++
app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +
app/Services/Activity/RingCentral/Service.php | 38 +++++++--
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 +++++++++----
app/Services/RecallAI/RecallAIService.php | 11 +++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++++++++----
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 ++++
tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++++++++++++++-
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++-
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +---
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++-----------
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ++-
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++----
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++---
tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++
29 files changed, 1009 insertions(+), 218 deletions(-)
create mode 100644 app/Component/ES/QueuePriorityEnum.php
create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5692/5692 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) tests/Unit/Notifications/Activities/SmsReceivedTest.php (no_unused_imports)
---------- begin diff ----------
--- /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php
+++ /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php
@@ -5,14 +5,11 @@
namespace Tests\Unit\Notifications\Activities;
use Illuminate\Support\Facades\Config;
-use Jiminny\Mail\Activities\SmsReceived as SmsMailable;
use Jiminny\Models\Activity;
use Jiminny\Notifications\Activities\SmsReceived;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
-use ReflectionClass;
use Tests\TestCase;
-use Vinkla\Hashids\Facades\Hashids;
#[CoversClass(SmsReceived::class)]
class SmsReceivedTest extends TestCase
----------- end diff -----------
2) tests/Unit/Services/Mail/TextRelayServiceTest.php (new_with_parentheses, class_definition, function_declaration)
---------- begin diff ----------
--- /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php
+++ /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php
@@ -198,7 +198,7 @@
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
- \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn($expires) => $expires instanceof \Carbon\Carbon));
+ \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
@@ -229,7 +229,7 @@
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
- \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn($expires) => $expires instanceof \Carbon\Carbon));
+ \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
@@ -242,7 +242,7 @@
private function createTextRelayService(): TextRelayService
{
- $service = new class extends TextRelayService {
+ $service = new class () extends TextRelayService {
public function __construct()
{
}
----------- end diff -----------
Fixed 2 of 5692 files in 39.611 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 1461, done.
remote: Counting objects: 100% (841/841), done.
remote: Compressing objects: 100% (257/257), done.
remote: Total 1461 (delta 668), reused 660 (delta 582), pack-reused 620 (from 2)
Receiving objects: 100% (1461/1461), 500.16 KiB | 1.42 MiB/s, done.
Resolving deltas: 100% (963/963), completed with 95 local objects.
From github.com:jiminny/app
6818adf8e2..1aee7aad9a master -> origin/master
8960f61b14..d84274dbaa JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
168f64052c..8fafc5d81d JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall
* [new branch] JY-20664-customer-api-exec-reports -> origin/JY-20664-customer-api-exec-reports
+ a77c52000f...a9a392e002 JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app (forced update)
* [new branch] JY-20828-user-can-manage-desktop-recording-permissions -> origin/JY-20828-user-can-manage-desktop-recording-permissions
3347ccc179..180e5a963d JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20842-add-delete-events-for-es -> origin/JY-20842-add-delete-events-for-es
729a39244d..39e950a69f JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents
+ 950f93a88b...e3b34108d9 JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] JY-20955-multiple-calendars-events -> origin/JY-20955-multiple-calendars-events
* [new branch] secfix/npm-20260522 -> origin/secfix/npm-20260522
Updating 177ea29b8d..1aee7aad9a
Fast-forward
.github/claude-reviewer/no-ticket-warning.txt | 8 +
.github/claude-reviewer/scripts/fetch-jira-context.mjs | 120 ++++++
.github/workflows/claude.yml | 72 +++-
.github/workflows/secfix.yml | 2 +-
app/Component/AskAnything/AskAnythingPromptService.php | 10 +-
app/Component/AskAnything/Dtos/AskAnythingPromptDto.php | 5 +
app/Component/ES/AsyncUpdateElasticSearch.php | 27 +-
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/BatchStatusInterface.php | 48 ---
app/Component/ES/Processor/BatchStatusManager.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 69 +++-
app/Component/ES/Processor/RedisEntityExtractor.php | 25 ++
app/Component/ES/Processor/TargetEntitiesSelector.php | 144 +++++--
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 38 +-
app/Component/ES/Processor/Traits/WorkerIdTrait.php | 15 -
app/Component/ES/QueuePriorityEnum.php | 43 ++
app/Component/ES/UpdateProcessManager.php | 102 ++---
app/Component/Transcription/Service/TranscriptionService.php | 24 +-
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 28 +-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 28 +-
app/DTO/Invitation/UserInvitationDTO.php | 8 +-
app/Http/Controllers/API/ActivityController.php | 11 +-
app/Http/Controllers/API/V2/AskJiminnyReportsController.php | 2 +
app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +
app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +
app/Http/Transformers/SearchTransformer.php | 1 +
app/Jobs/Activity/Import/DownloadTrack.php | 8 +-
app/Models/AskAnything/AskAnythingPrompt.php | 9 +
app/Notifications/Activities/SmsReceived.php | 6 +-
app/Providers/JiminnyServiceProvider.php | 6 -
app/Repositories/AskAnythingRepository.php | 8 +-
app/Services/Activity/RingCentral/Service.php | 38 +-
app/Services/Activity/Salesforce/Service.php | 5 -
app/Services/Activity/TwilioVideo/Service.php | 26 +-
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 7 +
app/Services/Mail/Office/EmailApiClient.php | 78 +++-
app/Services/Mail/TextRelayService.php | 33 ++
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++-
app/Services/RecallAI/RecallAIService.php | 11 +
front-end/src/components/AiReports/Manage/useReportsGrid.js | 5 +-
front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 30 ++
front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModal.spec.js | 71 ++++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++-
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +
front-end/src/components/playback/Framework/FrameworksTab.vue | 22 +-
front-end/src/components/shared/AskAnything/AskAnythingPromptFormItem.vue | 2 +
front-end/src/components/shared/AskAnything/AskAnythingSettingsDrawer.vue | 23 +-
front-end/src/components/shared/AskAnything/__mocks__/AskAnythingSettingsDrawer.mocks.js | 1 +
front-end/src/components/shared/AskAnything/__tests__/AskAnythingSettingsDrawer.spec.js | 139 ++++---
front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.html | 1235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.snap | 1382 ---------------------------------------------------------------
front-end/src/components/shared/AskAnything/prompts.js | 1 +
front-end/src/components/shared/AskAnything/useAskAnything.js | 1 +
front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +
front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 ++-
front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++-
front-end/src/store/modules/playback/mutations.js | 1 +
tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++-
tests/Unit/Component/AskAnything/AskAnythingPromptServiceTest.php | 37 +-
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +-
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +-
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 144 ++++---
tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.php | 106 +++++
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 438 +++++++++++++++-----
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 43 +-
tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.php | 23 --
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 64 +++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 102 +++--
tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 31 +-
tests/Unit/Notifications/Activities/SmsReceivedTest.php | 50 +++
tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++-
tests/Unit/Services/Activity/TwilioVideo/ServiceTest.php | 67 +++-
tests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.php ...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 20 09:14:49 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-audio:worker-audio_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5689/5689 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5689 files in 34.956 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5689/5689 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) tests/Unit/Services/Mail/TextRelayServiceTest.php (no_unused_imports)\n ---------- begin diff ----------\n--- /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n+++ /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n@@ -9,11 +9,7 @@\n use Google\\Service\\Gmail\\MessagePart;\n use Google\\Service\\Gmail\\MessagePartHeader;\n use Illuminate\\Support\\Facades\\Config;\n-use Illuminate\\Support\\Facades\\Queue;\n-use Illuminate\\Support\\Facades\\DB;\n use Jiminny\\Services\\Mail\\TextRelayService;\n-use Jiminny\\Models\\TextRelay;\n-use Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\n use PHPUnit\\Framework\\Attributes\\CoversClass;\n use PHPUnit\\Framework\\Attributes\\DataProvider;\n use Tests\\TestCase;\n\n ----------- end diff -----------\n\n\nFixed 1 of 5689 files in 44.720 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status\nOn branch JY-20613-allow-owner-role-on-team-setup\nYour branch and 'origin/JY-20613-allow-owner-role-on-team-setup' have diverged,\nand have 1 and 10 different commits each, respectively.\n (use \"git pull\" to merge the remote branch into yours)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull\nremote: Enumerating objects: 1400, done.\nremote: Counting objects: 100% (775/775), done.\nremote: Compressing objects: 100% (116/116), done.\nremote: Total 1400 (delta 692), reused 662 (delta 659), pack-reused 625 (from 3)\nReceiving objects: 100% (1400/1400), 950.35 KiB | 2.21 MiB/s, done.\nResolving deltas: 100% (878/878), completed with 225 local objects.\nFrom github.com:jiminny/app\n d5a447e492..c4e163f3e7 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup\n 0b8343d179..32cf0db4fb JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5\n 56ca84fabd..3f5f9b21c7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects\n 2b5e6ea62b..6fa3fead5a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n 045ab2e174..729a39244d JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents\n * [new branch] JY-20920-participant-matching-exclusive-mechanism -> origin/JY-20920-participant-matching-exclusive-mechanism\n 177ea29b8d..a873f0cbce master -> origin/master\nMerge made by the 'ort' strategy.\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 +++++----\n app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 48 ---------------\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++------\n app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++-------\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 ++++++++--\n app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++\n app/Component/ES/UpdateProcessManager.php | 21 ++++---\n app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 +++++++++++----\n app/Component/ParticipantSpeech/Services/ParticipantAttributionService.php | 4 +-\n app/Component/Settings/AutoScoring/Services/UpdateAutoScoreService.php | 20 +++----\n app/Component/Transcription/Service/StorageService.php | 8 +--\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++-\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-\n app/Exceptions/RateLimitException.php | 19 +++++-\n app/Jobs/Crm/MatchActivityCrmData.php | 47 +++++++++++----\n app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 ++++++++++++++\n app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-\n app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-\n app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-\n app/Services/Activity/HubSpot/Service.php | 97 ++++++++++++++++++++++++++-----\n app/Services/Crm/Hubspot/Client.php | 132 ++++++++++++++++++++++++++++++++++++++++++\n app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 +++++\n app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 +++----\n app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++-----\n front-end/package.json | 2 +-\n front-end/yarn.lock | 8 +--\n routes/api.php | 7 ++-\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 ++++++--\n tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php | 42 --------------\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 ++---\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++---------------\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +--\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++-----\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 ++++++++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++---\n tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 +++++++++++++++++++++-\n tests/Unit/Component/Settings/AutoScoring/Services/UpdateAutoScoreServiceTest.php | 86 +++++++++++++++------------\n tests/Unit/Component/Transcription/Service/StorageServiceTest.php | 29 +++-------\n tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 ++++++++++++++++++\n tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--\n tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 ++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++----------------------------------------------------------------------\n 52 files changed, 1632 insertions(+), 631 deletions(-)\n delete mode 100644 app/Component/ES/ElasticSearchDocumentPartialUpdater.php\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php\n delete mode 100644 tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\n create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php\n create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push\nEnumerating objects: 19, done.\nCounting objects: 100% (16/16), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (9/9), done.\nWriting objects: 100% (9/9), 844 bytes | 844.00 KiB/s, done.\nTotal 9 (delta 6), reused 0 (delta 0), pack-reused 0\nremote: Resolving deltas: 100% (6/6), completed with 5 local objects.\nTo github.com:jiminny/app.git\n c4e163f3e7..f885e531ab JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status\nOn branch JY-20915-add-domain-specific-email-text-relay\nYour branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.\n\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnew file: tests/Unit/Notifications/Activities/SmsReceivedTest.php\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5690 files in 76.177 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5690 files in 97.337 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status\nOn branch JY-20676-delete-report-related-objects\nYour branch is behind 'origin/JY-20676-delete-report-related-objects' by 48 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ git pull\nremote: Enumerating objects: 157, done.\nremote: Counting objects: 100% (157/157), done.\nremote: Compressing objects: 100% (42/42), done.\nremote: Total 157 (delta 120), reused 147 (delta 115), pack-reused 0 (from 0)\nReceiving objects: 100% (157/157), 24.95 KiB | 1.78 MiB/s, done.\nResolving deltas: 100% (120/120), completed with 37 local objects.\nFrom github.com:jiminny/app\n 3f5f9b21c7..202ab55be7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects\n 3642c9384c..cf70da243a JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup\n * [new branch] JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue\n * [new branch] JY-20930-ringcentral-disconnected-crm -> origin/JY-20930-ringcentral-disconnected-crm\n a873f0cbce..71b36decb6 master -> origin/master\nUpdating 56ca84fabd..202ab55be7\nFast-forward\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++++++++------\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++++-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++++++++++++++++----------\n app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++++++++-------------\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++++++++++---\n app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++++++++++++\n app/Component/ES/UpdateProcessManager.php | 21 +++++++------\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++++--\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +++-\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++++++++++++---------\n app/Services/RecallAI/RecallAIService.php | 11 +++++++\n front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +\n front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 +++++++++++++++++++++++++++++++----\n front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++++++++++++++++++++++----------\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++++++++---\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +++-------\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +++---\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++++++++---------\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++++------\n tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++++++++++++++++++\n 24 files changed, 619 insertions(+), 196 deletions(-)\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5690 files in 78.144 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001(2)\nzsh: unknown file attribute: 2\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-f.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-f.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-f.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-f.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-b.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-b.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-b.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-b.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/vin.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/vin.png \n/Users/lukas/Downloads/Photos-3-001(2)/vin.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/vin.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/dr-lic-f.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/dr-lic-f.png\n/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/dr-lic-b.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/dr-lic-b.png\n/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/gtp.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/gtp.png \nWarning: /Users/lukas/Downloads/Photos-3-001(2)/gtp.HEIC not a valid file - skipping\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/gtp.heif --out ~/Downloads/Photos-3-001\\(2\\)/gtp.png\n/Users/lukas/Downloads/Photos-3-001(2)/gtp.heif\n /Users/lukas/Downloads/Photos-3-001(2)/gtp.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-m-f.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-m-f.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-m-b.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-m-b.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status\nOn branch JY-20915-add-domain-specific-email-text-relay\nYour branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git pull\nremote: Enumerating objects: 445, done.\nremote: Counting objects: 100% (265/265), done.\nremote: Compressing objects: 100% (64/64), done.\nremote: Total 445 (delta 214), reused 210 (delta 198), pack-reused 180 (from 2)\nReceiving objects: 100% (445/445), 151.54 KiB | 1.43 MiB/s, done.\nResolving deltas: 100% (285/285), completed with 67 local objects.\nFrom github.com:jiminny/app\n d3ee1a203b..caba325b1a JY-20915-add-domain-specific-email-text-relay -> origin/JY-20915-add-domain-specific-email-text-relay\n 32cf0db4fb..8960f61b14 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5\n 4642fad114..168f64052c JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall\n 4f15440265..f2221ddb54 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects\n * [new branch] JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 3eb70f7a73..a968dd2968 JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue\n 6fa3fead5a..3347ccc179 JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n + 1ac8a06aed...847efe844f JY-20853-mcp-seach_calls -> origin/JY-20853-mcp-seach_calls (forced update)\n * [new branch] JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings\n * [new branch] JY-20947-twilio-video-downloads -> origin/JY-20947-twilio-video-downloads\n 71b36decb6..6818adf8e2 master -> origin/master\nUpdating d3ee1a203b..caba325b1a\nFast-forward\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++---\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 ++-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++----\n app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++-----\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++-\n app/Component/ES/QueuePriorityEnum.php | 40 ++++++++++\n app/Component/ES/UpdateProcessManager.php | 21 ++---\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 ++-\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-\n app/DTO/Invitation/UserInvitationDTO.php | 8 +-\n app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +++\n app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +\n app/Services/Activity/RingCentral/Service.php | 38 +++++++--\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 +++++++++----\n app/Services/RecallAI/RecallAIService.php | 11 +++\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++++++++----\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 ++++\n tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++++++++++++++-\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++-\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +---\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++-----------\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ++-\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++----\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++---\n tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----\n tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++\n 29 files changed, 1009 insertions(+), 218 deletions(-)\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5692/5692 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) tests/Unit/Notifications/Activities/SmsReceivedTest.php (no_unused_imports)\n ---------- begin diff ----------\n--- /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php\n+++ /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php\n@@ -5,14 +5,11 @@\n namespace Tests\\Unit\\Notifications\\Activities;\n \n use Illuminate\\Support\\Facades\\Config;\n-use Jiminny\\Mail\\Activities\\SmsReceived as SmsMailable;\n use Jiminny\\Models\\Activity;\n use Jiminny\\Notifications\\Activities\\SmsReceived;\n use Mockery;\n use PHPUnit\\Framework\\Attributes\\CoversClass;\n-use ReflectionClass;\n use Tests\\TestCase;\n-use Vinkla\\Hashids\\Facades\\Hashids;\n \n #[CoversClass(SmsReceived::class)]\n class SmsReceivedTest extends TestCase\n\n ----------- end diff -----------\n\n 2) tests/Unit/Services/Mail/TextRelayServiceTest.php (new_with_parentheses, class_definition, function_declaration)\n ---------- begin diff ----------\n--- /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n+++ /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n@@ -198,7 +198,7 @@\n $gmailService->users_history = $usersHistory;\n \n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n- \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn($expires) => $expires instanceof \\Carbon\\Carbon));\n+ \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n \n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n@@ -229,7 +229,7 @@\n $gmailService->users_history = $usersHistory;\n \n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n- \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn($expires) => $expires instanceof \\Carbon\\Carbon));\n+ \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n \n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n@@ -242,7 +242,7 @@\n \n private function createTextRelayService(): TextRelayService\n {\n- $service = new class extends TextRelayService {\n+ $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n\n ----------- end diff -----------\n\n\nFixed 2 of 5692 files in 39.611 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 74 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/Crm/Salesforce/Service.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 1461, done.\nremote: Counting objects: 100% (841/841), done.\nremote: Compressing objects: 100% (257/257), done.\nremote: Total 1461 (delta 668), reused 660 (delta 582), pack-reused 620 (from 2)\nReceiving objects: 100% (1461/1461), 500.16 KiB | 1.42 MiB/s, done.\nResolving deltas: 100% (963/963), completed with 95 local objects.\nFrom github.com:jiminny/app\n 6818adf8e2..1aee7aad9a master -> origin/master\n 8960f61b14..d84274dbaa JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5\n 168f64052c..8fafc5d81d JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall\n * [new branch] JY-20664-customer-api-exec-reports -> origin/JY-20664-customer-api-exec-reports\n + a77c52000f...a9a392e002 JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app (forced update)\n * [new branch] JY-20828-user-can-manage-desktop-recording-permissions -> origin/JY-20828-user-can-manage-desktop-recording-permissions\n 3347ccc179..180e5a963d JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20842-add-delete-events-for-es -> origin/JY-20842-add-delete-events-for-es\n 729a39244d..39e950a69f JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents\n + 950f93a88b...e3b34108d9 JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] JY-20955-multiple-calendars-events -> origin/JY-20955-multiple-calendars-events\n * [new branch] secfix/npm-20260522 -> origin/secfix/npm-20260522\nUpdating 177ea29b8d..1aee7aad9a\nFast-forward\n .github/claude-reviewer/no-ticket-warning.txt | 8 +\n .github/claude-reviewer/scripts/fetch-jira-context.mjs | 120 ++++++\n .github/workflows/claude.yml | 72 +++-\n .github/workflows/secfix.yml | 2 +-\n app/Component/AskAnything/AskAnythingPromptService.php | 10 +-\n app/Component/AskAnything/Dtos/AskAnythingPromptDto.php | 5 +\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 +-\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/BatchStatusInterface.php | 48 ---\n app/Component/ES/Processor/BatchStatusManager.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 69 +++-\n app/Component/ES/Processor/RedisEntityExtractor.php | 25 ++\n app/Component/ES/Processor/TargetEntitiesSelector.php | 144 +++++--\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 38 +-\n app/Component/ES/Processor/Traits/WorkerIdTrait.php | 15 -\n app/Component/ES/QueuePriorityEnum.php | 43 ++\n app/Component/ES/UpdateProcessManager.php | 102 ++---\n app/Component/Transcription/Service/TranscriptionService.php | 24 +-\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 28 +-\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 28 +-\n app/DTO/Invitation/UserInvitationDTO.php | 8 +-\n app/Http/Controllers/API/ActivityController.php | 11 +-\n app/Http/Controllers/API/V2/AskJiminnyReportsController.php | 2 +\n app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +\n app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +\n app/Http/Transformers/SearchTransformer.php | 1 +\n app/Jobs/Activity/Import/DownloadTrack.php | 8 +-\n app/Models/AskAnything/AskAnythingPrompt.php | 9 +\n app/Notifications/Activities/SmsReceived.php | 6 +-\n app/Providers/JiminnyServiceProvider.php | 6 -\n app/Repositories/AskAnythingRepository.php | 8 +-\n app/Services/Activity/RingCentral/Service.php | 38 +-\n app/Services/Activity/Salesforce/Service.php | 5 -\n app/Services/Activity/TwilioVideo/Service.php | 26 +-\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 7 +\n app/Services/Mail/Office/EmailApiClient.php | 78 +++-\n app/Services/Mail/TextRelayService.php | 33 ++\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++-\n app/Services/RecallAI/RecallAIService.php | 11 +\n front-end/src/components/AiReports/Manage/useReportsGrid.js | 5 +-\n front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 30 ++\n front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModal.spec.js | 71 ++++\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++-\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +\n front-end/src/components/playback/Framework/FrameworksTab.vue | 22 +-\n front-end/src/components/shared/AskAnything/AskAnythingPromptFormItem.vue | 2 +\n front-end/src/components/shared/AskAnything/AskAnythingSettingsDrawer.vue | 23 +-\n front-end/src/components/shared/AskAnything/__mocks__/AskAnythingSettingsDrawer.mocks.js | 1 +\n front-end/src/components/shared/AskAnything/__tests__/AskAnythingSettingsDrawer.spec.js | 139 ++++---\n front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.html | 1235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.snap | 1382 ---------------------------------------------------------------\n front-end/src/components/shared/AskAnything/prompts.js | 1 +\n front-end/src/components/shared/AskAnything/useAskAnything.js | 1 +\n front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +\n front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 ++-\n front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++-\n front-end/src/store/modules/playback/mutations.js | 1 +\n tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++-\n tests/Unit/Component/AskAnything/AskAnythingPromptServiceTest.php | 37 +-\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +-\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +-\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 144 ++++---\n tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.php | 106 +++++\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 438 +++++++++++++++-----\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 43 +-\n tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.php | 23 --\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 64 +++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 102 +++--\n tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 31 +-\n tests/Unit/Notifications/Activities/SmsReceivedTest.php | 50 +++\n tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++-\n tests/Unit/Services/Activity/TwilioVideo/ServiceTest.php | 67 +++-\n tests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.php | 24 +-\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 73 +++-\n tests/Unit/Services/Mail/Office/EmailApiClientTest.php | 86 +++-\n tests/Unit/Services/Mail/TextRelayServiceTest.php | 254 ++++++++++++\n tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++\n 79 files changed, 4254 insertions(+), 2020 deletions(-)\n create mode 100644 .github/claude-reviewer/no-ticket-warning.txt\n create mode 100644 .github/claude-reviewer/scripts/fetch-jira-context.mjs\n delete mode 100644 app/Component/ES/Processor/BatchStatusInterface.php\n create mode 100644 app/Component/ES/Processor/RedisEntityExtractor.php\n delete mode 100644 app/Component/ES/Processor/Traits/WorkerIdTrait.php\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModal.spec.js\n create mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.html\n delete mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.snap\n create mode 100644 tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.php\n delete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\n create mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.php\n create mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20963-fix-import-on-deleted-entity\nSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5691/5691 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5691 files in 96.077 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $","depth":4,"on_screen":true,"value":"Last login: Wed May 20 09:14:49 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-audio:worker-audio_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5689/5689 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5689 files in 34.956 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5689/5689 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) tests/Unit/Services/Mail/TextRelayServiceTest.php (no_unused_imports)\n ---------- begin diff ----------\n--- /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n+++ /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n@@ -9,11 +9,7 @@\n use Google\\Service\\Gmail\\MessagePart;\n use Google\\Service\\Gmail\\MessagePartHeader;\n use Illuminate\\Support\\Facades\\Config;\n-use Illuminate\\Support\\Facades\\Queue;\n-use Illuminate\\Support\\Facades\\DB;\n use Jiminny\\Services\\Mail\\TextRelayService;\n-use Jiminny\\Models\\TextRelay;\n-use Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\n use PHPUnit\\Framework\\Attributes\\CoversClass;\n use PHPUnit\\Framework\\Attributes\\DataProvider;\n use Tests\\TestCase;\n\n ----------- end diff -----------\n\n\nFixed 1 of 5689 files in 44.720 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status\nOn branch JY-20613-allow-owner-role-on-team-setup\nYour branch and 'origin/JY-20613-allow-owner-role-on-team-setup' have diverged,\nand have 1 and 10 different commits each, respectively.\n (use \"git pull\" to merge the remote branch into yours)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull\nremote: Enumerating objects: 1400, done.\nremote: Counting objects: 100% (775/775), done.\nremote: Compressing objects: 100% (116/116), done.\nremote: Total 1400 (delta 692), reused 662 (delta 659), pack-reused 625 (from 3)\nReceiving objects: 100% (1400/1400), 950.35 KiB | 2.21 MiB/s, done.\nResolving deltas: 100% (878/878), completed with 225 local objects.\nFrom github.com:jiminny/app\n d5a447e492..c4e163f3e7 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup\n 0b8343d179..32cf0db4fb JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5\n 56ca84fabd..3f5f9b21c7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects\n 2b5e6ea62b..6fa3fead5a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n 045ab2e174..729a39244d JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents\n * [new branch] JY-20920-participant-matching-exclusive-mechanism -> origin/JY-20920-participant-matching-exclusive-mechanism\n 177ea29b8d..a873f0cbce master -> origin/master\nMerge made by the 'ort' strategy.\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 +++++----\n app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 48 ---------------\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++------\n app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++-------\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 ++++++++--\n app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++\n app/Component/ES/UpdateProcessManager.php | 21 ++++---\n app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 +++++++++++----\n app/Component/ParticipantSpeech/Services/ParticipantAttributionService.php | 4 +-\n app/Component/Settings/AutoScoring/Services/UpdateAutoScoreService.php | 20 +++----\n app/Component/Transcription/Service/StorageService.php | 8 +--\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++-\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-\n app/Exceptions/RateLimitException.php | 19 +++++-\n app/Jobs/Crm/MatchActivityCrmData.php | 47 +++++++++++----\n app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 ++++++++++++++\n app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-\n app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-\n app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-\n app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-\n app/Services/Activity/HubSpot/Service.php | 97 ++++++++++++++++++++++++++-----\n app/Services/Crm/Hubspot/Client.php | 132 ++++++++++++++++++++++++++++++++++++++++++\n app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 +++++\n app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 +++----\n app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++-----\n front-end/package.json | 2 +-\n front-end/yarn.lock | 8 +--\n routes/api.php | 7 ++-\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 ++++++--\n tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php | 42 --------------\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 ++---\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++---------------\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +--\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++-----\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 ++++++++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++---\n tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 +++++++++++++++++++++-\n tests/Unit/Component/Settings/AutoScoring/Services/UpdateAutoScoreServiceTest.php | 86 +++++++++++++++------------\n tests/Unit/Component/Transcription/Service/StorageServiceTest.php | 29 +++-------\n tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 ++++++++++++++++++\n tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--\n tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 ++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++----------------------------------------------------------------------\n 52 files changed, 1632 insertions(+), 631 deletions(-)\n delete mode 100644 app/Component/ES/ElasticSearchDocumentPartialUpdater.php\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php\n delete mode 100644 tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\n create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php\n create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push\nEnumerating objects: 19, done.\nCounting objects: 100% (16/16), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (9/9), done.\nWriting objects: 100% (9/9), 844 bytes | 844.00 KiB/s, done.\nTotal 9 (delta 6), reused 0 (delta 0), pack-reused 0\nremote: Resolving deltas: 100% (6/6), completed with 5 local objects.\nTo github.com:jiminny/app.git\n c4e163f3e7..f885e531ab JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status\nOn branch JY-20915-add-domain-specific-email-text-relay\nYour branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.\n\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnew file: tests/Unit/Notifications/Activities/SmsReceivedTest.php\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5690 files in 76.177 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5690 files in 97.337 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status\nOn branch JY-20676-delete-report-related-objects\nYour branch is behind 'origin/JY-20676-delete-report-related-objects' by 48 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ git pull\nremote: Enumerating objects: 157, done.\nremote: Counting objects: 100% (157/157), done.\nremote: Compressing objects: 100% (42/42), done.\nremote: Total 157 (delta 120), reused 147 (delta 115), pack-reused 0 (from 0)\nReceiving objects: 100% (157/157), 24.95 KiB | 1.78 MiB/s, done.\nResolving deltas: 100% (120/120), completed with 37 local objects.\nFrom github.com:jiminny/app\n 3f5f9b21c7..202ab55be7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects\n 3642c9384c..cf70da243a JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup\n * [new branch] JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue\n * [new branch] JY-20930-ringcentral-disconnected-crm -> origin/JY-20930-ringcentral-disconnected-crm\n a873f0cbce..71b36decb6 master -> origin/master\nUpdating 56ca84fabd..202ab55be7\nFast-forward\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++++++++------\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++++-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++++++++++++++++----------\n app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++++++++-------------\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++++++++++---\n app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++++++++++++\n app/Component/ES/UpdateProcessManager.php | 21 +++++++------\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++++--\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +++-\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++++++++++++---------\n app/Services/RecallAI/RecallAIService.php | 11 +++++++\n front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +\n front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 +++++++++++++++++++++++++++++++----\n front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++++++++++++++++++++++----------\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++++++++---\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +++-------\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +++---\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++++++++---------\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++++------\n tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++++++++++++++++++\n 24 files changed, 619 insertions(+), 196 deletions(-)\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5690 files in 78.144 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001(2)\nzsh: unknown file attribute: 2\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-f.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-f.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-f.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-f.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-b.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-b.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-b.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-b.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/vin.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/vin.png \n/Users/lukas/Downloads/Photos-3-001(2)/vin.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/vin.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/dr-lic-f.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/dr-lic-f.png\n/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/dr-lic-b.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/dr-lic-b.png\n/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/gtp.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/gtp.png \nWarning: /Users/lukas/Downloads/Photos-3-001(2)/gtp.HEIC not a valid file - skipping\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/gtp.heif --out ~/Downloads/Photos-3-001\\(2\\)/gtp.png\n/Users/lukas/Downloads/Photos-3-001(2)/gtp.heif\n /Users/lukas/Downloads/Photos-3-001(2)/gtp.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-m-f.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-m-f.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\\(2\\)/talon-m-b.HEIC --out ~/Downloads/Photos-3-001\\(2\\)/talon-m-b.png\n/Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.HEIC\n /Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.png\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status\nOn branch JY-20915-add-domain-specific-email-text-relay\nYour branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git pull\nremote: Enumerating objects: 445, done.\nremote: Counting objects: 100% (265/265), done.\nremote: Compressing objects: 100% (64/64), done.\nremote: Total 445 (delta 214), reused 210 (delta 198), pack-reused 180 (from 2)\nReceiving objects: 100% (445/445), 151.54 KiB | 1.43 MiB/s, done.\nResolving deltas: 100% (285/285), completed with 67 local objects.\nFrom github.com:jiminny/app\n d3ee1a203b..caba325b1a JY-20915-add-domain-specific-email-text-relay -> origin/JY-20915-add-domain-specific-email-text-relay\n 32cf0db4fb..8960f61b14 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5\n 4642fad114..168f64052c JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall\n 4f15440265..f2221ddb54 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects\n * [new branch] JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 3eb70f7a73..a968dd2968 JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue\n 6fa3fead5a..3347ccc179 JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n + 1ac8a06aed...847efe844f JY-20853-mcp-seach_calls -> origin/JY-20853-mcp-seach_calls (forced update)\n * [new branch] JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings\n * [new branch] JY-20947-twilio-video-downloads -> origin/JY-20947-twilio-video-downloads\n 71b36decb6..6818adf8e2 master -> origin/master\nUpdating d3ee1a203b..caba325b1a\nFast-forward\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++---\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 ++-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++----\n app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++-----\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++-\n app/Component/ES/QueuePriorityEnum.php | 40 ++++++++++\n app/Component/ES/UpdateProcessManager.php | 21 ++---\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 ++-\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-\n app/DTO/Invitation/UserInvitationDTO.php | 8 +-\n app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +++\n app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +\n app/Services/Activity/RingCentral/Service.php | 38 +++++++--\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 +++++++++----\n app/Services/RecallAI/RecallAIService.php | 11 +++\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++++++++----\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 ++++\n tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++++++++++++++-\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++-\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +---\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++-----------\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ++-\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++----\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++---\n tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----\n tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++\n 29 files changed, 1009 insertions(+), 218 deletions(-)\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5692/5692 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) tests/Unit/Notifications/Activities/SmsReceivedTest.php (no_unused_imports)\n ---------- begin diff ----------\n--- /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php\n+++ /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php\n@@ -5,14 +5,11 @@\n namespace Tests\\Unit\\Notifications\\Activities;\n \n use Illuminate\\Support\\Facades\\Config;\n-use Jiminny\\Mail\\Activities\\SmsReceived as SmsMailable;\n use Jiminny\\Models\\Activity;\n use Jiminny\\Notifications\\Activities\\SmsReceived;\n use Mockery;\n use PHPUnit\\Framework\\Attributes\\CoversClass;\n-use ReflectionClass;\n use Tests\\TestCase;\n-use Vinkla\\Hashids\\Facades\\Hashids;\n \n #[CoversClass(SmsReceived::class)]\n class SmsReceivedTest extends TestCase\n\n ----------- end diff -----------\n\n 2) tests/Unit/Services/Mail/TextRelayServiceTest.php (new_with_parentheses, class_definition, function_declaration)\n ---------- begin diff ----------\n--- /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n+++ /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php\n@@ -198,7 +198,7 @@\n $gmailService->users_history = $usersHistory;\n \n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n- \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn($expires) => $expires instanceof \\Carbon\\Carbon));\n+ \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n \n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n@@ -229,7 +229,7 @@\n $gmailService->users_history = $usersHistory;\n \n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n- \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn($expires) => $expires instanceof \\Carbon\\Carbon));\n+ \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n \n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n@@ -242,7 +242,7 @@\n \n private function createTextRelayService(): TextRelayService\n {\n- $service = new class extends TextRelayService {\n+ $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n\n ----------- end diff -----------\n\n\nFixed 2 of 5692 files in 39.611 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 74 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/Crm/Salesforce/Service.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpublic/favicon.ico\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 1461, done.\nremote: Counting objects: 100% (841/841), done.\nremote: Compressing objects: 100% (257/257), done.\nremote: Total 1461 (delta 668), reused 660 (delta 582), pack-reused 620 (from 2)\nReceiving objects: 100% (1461/1461), 500.16 KiB | 1.42 MiB/s, done.\nResolving deltas: 100% (963/963), completed with 95 local objects.\nFrom github.com:jiminny/app\n 6818adf8e2..1aee7aad9a master -> origin/master\n 8960f61b14..d84274dbaa JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5\n 168f64052c..8fafc5d81d JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall\n * [new branch] JY-20664-customer-api-exec-reports -> origin/JY-20664-customer-api-exec-reports\n + a77c52000f...a9a392e002 JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app (forced update)\n * [new branch] JY-20828-user-can-manage-desktop-recording-permissions -> origin/JY-20828-user-can-manage-desktop-recording-permissions\n 3347ccc179..180e5a963d JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20842-add-delete-events-for-es -> origin/JY-20842-add-delete-events-for-es\n 729a39244d..39e950a69f JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents\n + 950f93a88b...e3b34108d9 JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] JY-20955-multiple-calendars-events -> origin/JY-20955-multiple-calendars-events\n * [new branch] secfix/npm-20260522 -> origin/secfix/npm-20260522\nUpdating 177ea29b8d..1aee7aad9a\nFast-forward\n .github/claude-reviewer/no-ticket-warning.txt | 8 +\n .github/claude-reviewer/scripts/fetch-jira-context.mjs | 120 ++++++\n .github/workflows/claude.yml | 72 +++-\n .github/workflows/secfix.yml | 2 +-\n app/Component/AskAnything/AskAnythingPromptService.php | 10 +-\n app/Component/AskAnything/Dtos/AskAnythingPromptDto.php | 5 +\n app/Component/ES/AsyncUpdateElasticSearch.php | 27 +-\n app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-\n app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +-\n app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-\n app/Component/ES/Processor/BatchStatusInterface.php | 48 ---\n app/Component/ES/Processor/BatchStatusManager.php | 3 +-\n app/Component/ES/Processor/DTOs/SelectionList.php | 69 +++-\n app/Component/ES/Processor/RedisEntityExtractor.php | 25 ++\n app/Component/ES/Processor/TargetEntitiesSelector.php | 144 +++++--\n app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 38 +-\n app/Component/ES/Processor/Traits/WorkerIdTrait.php | 15 -\n app/Component/ES/QueuePriorityEnum.php | 43 ++\n app/Component/ES/UpdateProcessManager.php | 102 ++---\n app/Component/Transcription/Service/TranscriptionService.php | 24 +-\n app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 28 +-\n app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 28 +-\n app/DTO/Invitation/UserInvitationDTO.php | 8 +-\n app/Http/Controllers/API/ActivityController.php | 11 +-\n app/Http/Controllers/API/V2/AskJiminnyReportsController.php | 2 +\n app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +\n app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +\n app/Http/Transformers/SearchTransformer.php | 1 +\n app/Jobs/Activity/Import/DownloadTrack.php | 8 +-\n app/Models/AskAnything/AskAnythingPrompt.php | 9 +\n app/Notifications/Activities/SmsReceived.php | 6 +-\n app/Providers/JiminnyServiceProvider.php | 6 -\n app/Repositories/AskAnythingRepository.php | 8 +-\n app/Services/Activity/RingCentral/Service.php | 38 +-\n app/Services/Activity/Salesforce/Service.php | 5 -\n app/Services/Activity/TwilioVideo/Service.php | 26 +-\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 7 +\n app/Services/Mail/Office/EmailApiClient.php | 78 +++-\n app/Services/Mail/TextRelayService.php | 33 ++\n app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++-\n app/Services/RecallAI/RecallAIService.php | 11 +\n front-end/src/components/AiReports/Manage/useReportsGrid.js | 5 +-\n front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 30 ++\n front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModal.spec.js | 71 ++++\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++-\n front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +\n front-end/src/components/playback/Framework/FrameworksTab.vue | 22 +-\n front-end/src/components/shared/AskAnything/AskAnythingPromptFormItem.vue | 2 +\n front-end/src/components/shared/AskAnything/AskAnythingSettingsDrawer.vue | 23 +-\n front-end/src/components/shared/AskAnything/__mocks__/AskAnythingSettingsDrawer.mocks.js | 1 +\n front-end/src/components/shared/AskAnything/__tests__/AskAnythingSettingsDrawer.spec.js | 139 ++++---\n front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.html | 1235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.snap | 1382 ---------------------------------------------------------------\n front-end/src/components/shared/AskAnything/prompts.js | 1 +\n front-end/src/components/shared/AskAnything/useAskAnything.js | 1 +\n front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +\n front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 ++-\n front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++-\n front-end/src/store/modules/playback/mutations.js | 1 +\n tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++-\n tests/Unit/Component/AskAnything/AskAnythingPromptServiceTest.php | 37 +-\n tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +-\n tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +-\n tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 144 ++++---\n tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.php | 106 +++++\n tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 438 +++++++++++++++-----\n tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 43 +-\n tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.php | 23 --\n tests/Unit/Component/ES/QueuePriorityEnumTest.php | 64 +++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 102 +++--\n tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 31 +-\n tests/Unit/Notifications/Activities/SmsReceivedTest.php | 50 +++\n tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++-\n tests/Unit/Services/Activity/TwilioVideo/ServiceTest.php | 67 +++-\n tests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.php | 24 +-\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 73 +++-\n tests/Unit/Services/Mail/Office/EmailApiClientTest.php | 86 +++-\n tests/Unit/Services/Mail/TextRelayServiceTest.php | 254 ++++++++++++\n tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++\n 79 files changed, 4254 insertions(+), 2020 deletions(-)\n create mode 100644 .github/claude-reviewer/no-ticket-warning.txt\n create mode 100644 .github/claude-reviewer/scripts/fetch-jira-context.mjs\n delete mode 100644 app/Component/ES/Processor/BatchStatusInterface.php\n create mode 100644 app/Component/ES/Processor/RedisEntityExtractor.php\n delete mode 100644 app/Component/ES/Processor/Traits/WorkerIdTrait.php\n create mode 100644 app/Component/ES/QueuePriorityEnum.php\n create mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModal.spec.js\n create mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.html\n delete mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.snap\n create mode 100644 tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.php\n delete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.php\n create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php\n create mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.php\n create mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20963-fix-import-on-deleted-entity\nSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5691/5691 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5691 files in 96.077 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.0013888889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.16180556,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16597222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.3263889,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33055556,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.490625,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6548611,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.65902776,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ssh","depth":2,"bounds":{"left":0.8190972,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8232639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"APP (-zsh)","depth":1,"bounds":{"left":0.47291666,"top":0.033333335,"width":0.05138889,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
6301176414030891772
|
-824167416439362820
|
visual_change
|
accessibility
|
NULL
|
Last login: Wed May 20 09:14:49 on ttys007
Poetry Last login: Wed May 20 09:14:49 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5689/5689 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5689 files in 34.956 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] -9,11 +9,7 @@
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
-use Illuminate\Support\Facades\Queue;
-use Illuminate\Support\Facades\DB;
use Jiminny\Services\Mail\TextRelayService;
-use Jiminny\Models\TextRelay;
-use Jiminny\Jobs\Mailbox\EmailTextRelay;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
----------- end diff -----------
Fixed 1 of 5689 files in 44.720 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull
remote: Enumerating objects: 1400, done.
remote: Counting objects: 100% (775/775), done.
remote: Compressing objects: 100% (116/116), done.
remote: Total 1400 (delta 692), reused 662 (delta 659), pack-reused 625 (from 3)
Receiving objects: 100% (1400/1400), 950.35 KiB | 2.21 MiB/s, done.
Resolving deltas: 100% (878/878), completed with 225 local objects.
From github.com:jiminny/app
d5a447e492..c4e163f3e7 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
0b8343d179..32cf0db4fb JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
56ca84fabd..3f5f9b21c7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects
2b5e6ea62b..6fa3fead5a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
045ab2e174..729a39244d JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents
* [new branch] JY-20920-participant-matching-exclusive-mechanism -> origin/JY-20920-participant-matching-exclusive-mechanism
177ea29b8d..a873f0cbce master -> origin/master
Merge made by the 'ort' strategy.
app/Component/ES/AsyncUpdateElasticSearch.php | 27 +++++----
app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 48 ---------------
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++------
app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++-------
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 ++++++++--
app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++
app/Component/ES/UpdateProcessManager.php | 21 ++++---
app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 +++++++++++----
app/Component/ParticipantSpeech/Services/ParticipantAttributionService.php | 4 +-
app/Component/Settings/AutoScoring/Services/UpdateAutoScoreService.php | 20 +++----
app/Component/Transcription/Service/StorageService.php | 8 +--
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-
app/Exceptions/RateLimitException.php | 19 +++++-
app/Jobs/Crm/MatchActivityCrmData.php | 47 +++++++++++----
app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 ++++++++++++++
app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-
app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-
app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-
app/Services/Activity/HubSpot/Service.php | 97 ++++++++++++++++++++++++++-----
app/Services/Crm/Hubspot/Client.php | 132 ++++++++++++++++++++++++++++++++++++++++++
app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 +++++
app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 +++----
app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++-----
front-end/package.json | 2 +-
front-end/yarn.lock | 8 +--
routes/api.php | 7 ++-
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 ++++++--
tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php | 42 --------------
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 ++---
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++---------------
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +--
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++-----
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 ++++++++++++++++++++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++---
tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 +++++++++++++++++++++-
tests/Unit/Component/Settings/AutoScoring/Services/UpdateAutoScoreServiceTest.php | 86 +++++++++++++++------------
tests/Unit/Component/Transcription/Service/StorageServiceTest.php | 29 +++-------
tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 ++++++++++++++++++
tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--
tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 ++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++----------------------------------------------------------------------
52 files changed, 1632 insertions(+), 631 deletions(-)
delete mode 100644 app/Component/ES/ElasticSearchDocumentPartialUpdater.php
create mode 100644 app/Component/ES/QueuePriorityEnum.php
create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php
delete mode 100644 tests/Unit/Component/ES/ElasticSearchDocumentPartialUpdaterTest.php
create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php
create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php
create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push
Enumerating objects: 19, done.
Counting objects: 100% (16/16), done.
Delta compression using up to 8 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 844 bytes | 844.00 KiB/s, done.
Total 9 (delta 6), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (6/6), completed with 5 local objects.
To github.com:jiminny/app.git
c4e163f3e7..f885e531ab JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status
On branch JY-20915-add-domain-specific-email-text-relay
Your branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: tests/Unit/Notifications/Activities/SmsReceivedTest.php
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5690 files in 76.177 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git status
On branch JY-20676-delete-report-related-objects
Your branch is behind 'origin/JY-20676-delete-report-related-objects' by 48 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ git pull
remote: Enumerating objects: 157, done.
remote: Counting objects: 100% (157/157), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 157 (delta 120), reused 147 (delta 115), pack-reused 0 (from 0)
Receiving objects: 100% (157/157), 24.95 KiB | 1.78 MiB/s, done.
Resolving deltas: 100% (120/120), completed with 37 local objects.
From github.com:jiminny/app
3f5f9b21c7..202ab55be7 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects
3642c9384c..cf70da243a JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
* [new branch] JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue
* [new branch] JY-20930-ringcentral-disconnected-crm -> origin/JY-20930-ringcentral-disconnected-crm
a873f0cbce..71b36decb6 master -> origin/master
Updating 56ca84fabd..202ab55be7
Fast-forward
app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++++++++------
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +++++-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++++++++++++++++++++----------
app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++++++++++-------------
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++++++++++---
app/Component/ES/QueuePriorityEnum.php | 40 +++++++++++++++++++++++
app/Component/ES/UpdateProcessManager.php | 21 +++++++------
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 +++++--
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +++-
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++++++++++++++++++++++---------
app/Services/RecallAI/RecallAIService.php | 11 +++++++
front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +
front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 +++++++++++++++++++++++++++++++----
front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++++++++++++++++++++++----------
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++++++++---
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +++-------
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 +++---
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++++++++++---------
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++++++------
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++++++++++++++++++
24 files changed, 619 insertions(+), 196 deletions(-)
create mode 100644 app/Component/ES/QueuePriorityEnum.php
create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5690 files in 78.144 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-f.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-f.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-f.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-f.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-b.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-b.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-b.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-b.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/vin.HEIC --out ~/Downloads/Photos-3-001\(2\)/vin.png
/Users/lukas/Downloads/Photos-3-001(2)/vin.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/vin.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/dr-lic-f.HEIC --out ~/Downloads/Photos-3-001\(2\)/dr-lic-f.png
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-f.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/dr-lic-b.HEIC --out ~/Downloads/Photos-3-001\(2\)/dr-lic-b.png
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/dr-lic-b.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/gtp.HEIC --out ~/Downloads/Photos-3-001\(2\)/gtp.png
Warning: /Users/lukas/Downloads/Photos-3-001(2)/gtp.HEIC not a valid file - skipping
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/gtp.heif --out ~/Downloads/Photos-3-001\(2\)/gtp.png
/Users/lukas/Downloads/Photos-3-001(2)/gtp.heif
/Users/lukas/Downloads/Photos-3-001(2)/gtp.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-m-f.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-m-f.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-f.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sips -s format png ~/Downloads/Photos-3-001\(2\)/talon-m-b.HEIC --out ~/Downloads/Photos-3-001\(2\)/talon-m-b.png
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.HEIC
/Users/lukas/Downloads/Photos-3-001(2)/talon-m-b.png
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git status
On branch JY-20915-add-domain-specific-email-text-relay
Your branch is up to date with 'origin/JY-20915-add-domain-specific-email-text-relay'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ git pull
remote: Enumerating objects: 445, done.
remote: Counting objects: 100% (265/265), done.
remote: Compressing objects: 100% (64/64), done.
remote: Total 445 (delta 214), reused 210 (delta 198), pack-reused 180 (from 2)
Receiving objects: 100% (445/445), 151.54 KiB | 1.43 MiB/s, done.
Resolving deltas: 100% (285/285), completed with 67 local objects.
From github.com:jiminny/app
d3ee1a203b..caba325b1a JY-20915-add-domain-specific-email-text-relay -> origin/JY-20915-add-domain-specific-email-text-relay
32cf0db4fb..8960f61b14 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
4642fad114..168f64052c JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall
4f15440265..f2221ddb54 JY-20676-delete-report-related-objects -> origin/JY-20676-delete-report-related-objects
* [new branch] JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
3eb70f7a73..a968dd2968 JY-20808-schedule-reset-on-low-queue -> origin/JY-20808-schedule-reset-on-low-queue
6fa3fead5a..3347ccc179 JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
+ 1ac8a06aed...847efe844f JY-20853-mcp-seach_calls -> origin/JY-20853-mcp-seach_calls (forced update)
* [new branch] JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings
* [new branch] JY-20947-twilio-video-downloads -> origin/JY-20947-twilio-video-downloads
71b36decb6..6818adf8e2 master -> origin/master
Updating d3ee1a203b..caba325b1a
Fast-forward
app/Component/ES/AsyncUpdateElasticSearch.php | 27 ++++---
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 ++-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 71 +++++++++++++----
app/Component/ES/Processor/TargetEntitiesSelector.php | 47 ++++++-----
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 31 +++++++-
app/Component/ES/QueuePriorityEnum.php | 40 ++++++++++
app/Component/ES/UpdateProcessManager.php | 21 ++---
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 12 ++-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 6 +-
app/DTO/Invitation/UserInvitationDTO.php | 8 +-
app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +++
app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +
app/Services/Activity/RingCentral/Service.php | 38 +++++++--
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 +++++++++----
app/Services/RecallAI/RecallAIService.php | 11 +++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++++++++----
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 ++++
tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++++++++++++++-
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +++++-
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +---
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 150 ++++++++++++++++++++++++-----------
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ++-
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 38 +++++----
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 63 +++++++++++++++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 20 ++---
tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 44 ++++++++++
29 files changed, 1009 insertions(+), 218 deletions(-)
create mode 100644 app/Component/ES/QueuePriorityEnum.php
create mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20915-add-domain-specific-email-text-relay) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5692/5692 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) tests/Unit/Notifications/Activities/SmsReceivedTest.php (no_unused_imports)
---------- begin diff ----------
--- /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php
+++ /home/jiminny/tests/Unit/Notifications/Activities/SmsReceivedTest.php
@@ -5,14 +5,11 @@
namespace Tests\Unit\Notifications\Activities;
use Illuminate\Support\Facades\Config;
-use Jiminny\Mail\Activities\SmsReceived as SmsMailable;
use Jiminny\Models\Activity;
use Jiminny\Notifications\Activities\SmsReceived;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
-use ReflectionClass;
use Tests\TestCase;
-use Vinkla\Hashids\Facades\Hashids;
#[CoversClass(SmsReceived::class)]
class SmsReceivedTest extends TestCase
----------- end diff -----------
2) tests/Unit/Services/Mail/TextRelayServiceTest.php (new_with_parentheses, class_definition, function_declaration)
---------- begin diff ----------
--- /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php
+++ /home/jiminny/tests/Unit/Services/Mail/TextRelayServiceTest.php
@@ -198,7 +198,7 @@
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
- \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn($expires) => $expires instanceof \Carbon\Carbon));
+ \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
@@ -229,7 +229,7 @@
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
- \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn($expires) => $expires instanceof \Carbon\Carbon));
+ \Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
@@ -242,7 +242,7 @@
private function createTextRelayService(): TextRelayService
{
- $service = new class extends TextRelayService {
+ $service = new class () extends TextRelayService {
public function __construct()
{
}
----------- end diff -----------
Fixed 2 of 5692 files in 39.611 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 1461, done.
remote: Counting objects: 100% (841/841), done.
remote: Compressing objects: 100% (257/257), done.
remote: Total 1461 (delta 668), reused 660 (delta 582), pack-reused 620 (from 2)
Receiving objects: 100% (1461/1461), 500.16 KiB | 1.42 MiB/s, done.
Resolving deltas: 100% (963/963), completed with 95 local objects.
From github.com:jiminny/app
6818adf8e2..1aee7aad9a master -> origin/master
8960f61b14..d84274dbaa JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
168f64052c..8fafc5d81d JY-20606-desktop-app-recall -> origin/JY-20606-desktop-app-recall
* [new branch] JY-20664-customer-api-exec-reports -> origin/JY-20664-customer-api-exec-reports
+ a77c52000f...a9a392e002 JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app (forced update)
* [new branch] JY-20828-user-can-manage-desktop-recording-permissions -> origin/JY-20828-user-can-manage-desktop-recording-permissions
3347ccc179..180e5a963d JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20842-add-delete-events-for-es -> origin/JY-20842-add-delete-events-for-es
729a39244d..39e950a69f JY-20842-remove-elastic-search-delete-documents -> origin/JY-20842-remove-elastic-search-delete-documents
+ 950f93a88b...e3b34108d9 JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] JY-20955-multiple-calendars-events -> origin/JY-20955-multiple-calendars-events
* [new branch] secfix/npm-20260522 -> origin/secfix/npm-20260522
Updating 177ea29b8d..1aee7aad9a
Fast-forward
.github/claude-reviewer/no-ticket-warning.txt | 8 +
.github/claude-reviewer/scripts/fetch-jira-context.mjs | 120 ++++++
.github/workflows/claude.yml | 72 +++-
.github/workflows/secfix.yml | 2 +-
app/Component/AskAnything/AskAnythingPromptService.php | 10 +-
app/Component/AskAnything/Dtos/AskAnythingPromptDto.php | 5 +
app/Component/ES/AsyncUpdateElasticSearch.php | 27 +-
app/Component/ES/Listeners/UpdateMultipleTargetsListener.php | 3 +-
app/Component/ES/Listeners/UpdateSingleTargetListener.php | 10 +-
app/Component/ES/Processor/Actions/UpsertDocumentsAction.php | 3 +-
app/Component/ES/Processor/BatchStatusInterface.php | 48 ---
app/Component/ES/Processor/BatchStatusManager.php | 3 +-
app/Component/ES/Processor/DTOs/SelectionList.php | 69 +++-
app/Component/ES/Processor/RedisEntityExtractor.php | 25 ++
app/Component/ES/Processor/TargetEntitiesSelector.php | 144 +++++--
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 38 +-
app/Component/ES/Processor/Traits/WorkerIdTrait.php | 15 -
app/Component/ES/QueuePriorityEnum.php | 43 ++
app/Component/ES/UpdateProcessManager.php | 102 ++---
app/Component/Transcription/Service/TranscriptionService.php | 24 +-
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 28 +-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 28 +-
app/DTO/Invitation/UserInvitationDTO.php | 8 +-
app/Http/Controllers/API/ActivityController.php | 11 +-
app/Http/Controllers/API/V2/AskJiminnyReportsController.php | 2 +
app/Http/Requests/Settings/Teams/CreateTeamRequest.php | 12 +
app/Http/Requests/Settings/Teams/EditTeamRequest.php | 1 +
app/Http/Transformers/SearchTransformer.php | 1 +
app/Jobs/Activity/Import/DownloadTrack.php | 8 +-
app/Models/AskAnything/AskAnythingPrompt.php | 9 +
app/Notifications/Activities/SmsReceived.php | 6 +-
app/Providers/JiminnyServiceProvider.php | 6 -
app/Repositories/AskAnythingRepository.php | 8 +-
app/Services/Activity/RingCentral/Service.php | 38 +-
app/Services/Activity/Salesforce/Service.php | 5 -
app/Services/Activity/TwilioVideo/Service.php | 26 +-
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 7 +
app/Services/Mail/Office/EmailApiClient.php | 78 +++-
app/Services/Mail/TextRelayService.php | 33 ++
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 53 ++-
app/Services/RecallAI/RecallAIService.php | 11 +
front-end/src/components/AiReports/Manage/useReportsGrid.js | 5 +-
front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 30 ++
front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModal.spec.js | 71 ++++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 51 ++-
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +
front-end/src/components/playback/Framework/FrameworksTab.vue | 22 +-
front-end/src/components/shared/AskAnything/AskAnythingPromptFormItem.vue | 2 +
front-end/src/components/shared/AskAnything/AskAnythingSettingsDrawer.vue | 23 +-
front-end/src/components/shared/AskAnything/__mocks__/AskAnythingSettingsDrawer.mocks.js | 1 +
front-end/src/components/shared/AskAnything/__tests__/AskAnythingSettingsDrawer.spec.js | 139 ++++---
front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.html | 1235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
front-end/src/components/shared/AskAnything/__tests__/__snapshots__/AskAnythingSettingsDrawer.spec.js.snap | 1382 ---------------------------------------------------------------
front-end/src/components/shared/AskAnything/prompts.js | 1 +
front-end/src/components/shared/AskAnything/useAskAnything.js | 1 +
front-end/src/components/shared/SavedSearchModal/__mocks__/saved-searches.js | 1 +
front-end/src/components/shared/SavedSearchModal/__tests__/SavedSearchModal.spec.js | 60 ++-
front-end/src/components/shared/SavedSearchModal/useSavedSearch.js | 55 ++-
front-end/src/store/modules/playback/mutations.js | 1 +
tests/Feature/DTO/UserInvitationDTOTest.php | 65 ++-
tests/Unit/Component/AskAnything/AskAnythingPromptServiceTest.php | 37 +-
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 24 +-
tests/Unit/Component/ES/Processor/BatchStatusManagerTest.php | 16 +-
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 144 ++++---
tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.php | 106 +++++
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 438 +++++++++++++++-----
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 43 +-
tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.php | 23 --
tests/Unit/Component/ES/QueuePriorityEnumTest.php | 64 +++
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 102 +++--
tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 31 +-
tests/Unit/Notifications/Activities/SmsReceivedTest.php | 50 +++
tests/Unit/Services/Activity/RingCentral/ServiceTest.php | 339 +++++++++++++++-
tests/Unit/Services/Activity/TwilioVideo/ServiceTest.php | 67 +++-
tests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.php ...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71190
|
NULL
|
0
|
2026-05-22T11:29:24.611137+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449364611_m1.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449364611_m1.jpg...
|
BoosteroidAPP (DOCKERO 81DEV (-zsh)О 882APP (-zsh) BoosteroidAPP (DOCKERO 81DEV (-zsh)О 882APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreate mode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode 100644 app/Component/ES/Processor/Traits/WorkerIdTracreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/create mode 100644 front-end/src/components/shared/AskAnything/-delete mode 100644 front-end/src/components/shared/AskAnything/.create mode 100644 tests/Unit/Component/ES/Processor/RedisEntitydelete mode 100644 tests/Unit/Component/ES/Processor/Traits/Workcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTestcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTestlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $Switched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --conHomeDMsBOZOSTEROID1.11.12 (Beta) LatestBetaLOADINGWhat's next:© 2026 Boosteroid Games S.R.L.Try Docker Debug forseamless, persistent debugging tools inLearn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-ent|docker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.+Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedED→Jiminny ...cnsmecruus# general# happy_birthday# jiminny-bg# platform-tickets# product_launches# random_of jimi...yesIOVtrova **Ikovzelovaeo Jiuyan taueVLo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... Ol:: AppsJira CloudToastlabl100% <478•Fri 22 May 14:29:24Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore+Stoyan TomMonday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov..•...
|
NULL
|
-5366853307644898585
|
NULL
|
visual_change
|
ocr
|
NULL
|
BoosteroidAPP (DOCKERO 81DEV (-zsh)О 882APP (-zsh) BoosteroidAPP (DOCKERO 81DEV (-zsh)О 882APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreate mode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode 100644 app/Component/ES/Processor/Traits/WorkerIdTracreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/create mode 100644 front-end/src/components/shared/AskAnything/-delete mode 100644 front-end/src/components/shared/AskAnything/.create mode 100644 tests/Unit/Component/ES/Processor/RedisEntitydelete mode 100644 tests/Unit/Component/ES/Processor/Traits/Workcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTestcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTestlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $Switched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --conHomeDMsBOZOSTEROID1.11.12 (Beta) LatestBetaLOADINGWhat's next:© 2026 Boosteroid Games S.R.L.Try Docker Debug forseamless, persistent debugging tools inLearn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-ent|docker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.+Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedED→Jiminny ...cnsmecruus# general# happy_birthday# jiminny-bg# platform-tickets# product_launches# random_of jimi...yesIOVtrova **Ikovzelovaeo Jiuyan taueVLo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... Ol:: AppsJira CloudToastlabl100% <478•Fri 22 May 14:29:24Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore+Stoyan TomMonday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov..•...
|
71189
|
NULL
|
NULL
|
NULL
|
|
71189
|
NULL
|
0
|
2026-05-22T11:29:21.391086+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449361391_m1.jpg...
|
Boosteroid
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449361391_m1.jpg...
|
BoosteroidAPP (IDOCKERO 81DEV (-zsh)O $82APP (-zsh BoosteroidAPP (IDOCKERO 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreate mode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode 100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdelete mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreate mode 100644 tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $co -b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory used• •EDHomeDMsActivityFilesLaterMore+→Jiminny ...CHSIICCTIS# general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova2. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToastlabl100% <478•Fri 22 May 14:29:20Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/ORO-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov..•...
|
NULL
|
-6284847217854777250
|
NULL
|
visual_change
|
ocr
|
NULL
|
BoosteroidAPP (IDOCKERO 81DEV (-zsh)O $82APP (-zsh BoosteroidAPP (IDOCKERO 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreate mode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode 100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdelete mode 100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreate mode 100644 tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $co -b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory used• •EDHomeDMsActivityFilesLaterMore+→Jiminny ...CHSIICCTIS# general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova2. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToastlabl100% <478•Fri 22 May 14:29:20Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/ORO-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov..•...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71188
|
NULL
|
0
|
2026-05-22T11:29:19.204448+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449359204_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449359204_m2.jpg...
|
PhostornPlatform Sprint 4 Q2 - Platform Te-7 fJy-2 PhostornPlatform Sprint 4 Q2 - Platform Te-7 fJy-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu XJY-20676 delete AJ reports relateJY-20963 fix deleted object im XPipelines - jiminny/apps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabINavicatecode00O JIMINNY@ For you(• Recenti# Starred0+ Apps|Q Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5J All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b P attorm team& Processing t...a Site reliability...o=i New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email logs⅘> Developer escalations |afs Slack integrationQ SearchCSOMOA100% L2 * FtzzMay 14.29-10O Ask Rovo ® Eô (< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
-5039142662811998497
|
NULL
|
typing_pause
|
ocr
|
NULL
|
PhostornPlatform Sprint 4 Q2 - Platform Te-7 fJy-2 PhostornPlatform Sprint 4 Q2 - Platform Te-7 fJy-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu XJY-20676 delete AJ reports relateJY-20963 fix deleted object im XPipelines - jiminny/apps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabINavicatecode00O JIMINNY@ For you(• Recenti# Starred0+ Apps|Q Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5J All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b P attorm team& Processing t...a Site reliability...o=i New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email logs⅘> Developer escalations |afs Slack integrationQ SearchCSOMOA100% L2 * FtzzMay 14.29-10O Ask Rovo ® Eô (< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71186
|
NULL
|
NULL
|
NULL
|
|
71187
|
NULL
|
0
|
2026-05-22T11:29:18.199065+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449358199_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449358199_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":24,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":24,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":24,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":24,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.10069445,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":24,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8125,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":24,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":25,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9019930166124538418
|
-3495401782213667026
|
visual_change
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
SlackFileEditViewGoHistoryWindowHelpAPP (•••DOCKERO 81DEV (-zsh)О ₴2APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatadDonantcfonui.coTactnhntests/Unit/Services/Mail/Office/EmailApiClietests/Unit/Services/Mail/TextRelayServiceTesbotests/Unit/Services/RecallAI/RecallAIService79 files changed, 4254 insertions(+), 2020 dcreate mode 100644 .github/claude-reviewer/ncreate mode 100644 .github/claude-reviewer/sBoosteroid.app/Applications/Boosteroid.appdelete mode 100644 app/Component/ES/Processocreatemode 100644 app/Component/ES/Processotype team iddeletemode100644 app/Component/ES/Processocreatemode 100644 app/Component/ES/QueuePricreate mode 100644 front-end/src/components/Books.app/Applications/Books.appcreate mode 100644 front-end/src/components/delete mode 100644 front-end/src/components/create mode 100644 tests/Unit/Component/ES/Pdelete mode 100644 tests/Unit/Component/ES/Pcreate mode 100644 tests/Unit/Component/ES/QContacts.app/Applications/Contacts.appFont Book.app/Applications/Font Book.appcreate mode 100644 tests/Unit/Notifications/create mode 100644 tests/Unit/Services/Mail/Boot Camp Assistant.app(Applications/Utilities/Boot Camp Assistant.applukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiSwitched to a new branch 'JY-20963-fix-importlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jidocker exec -it docker_lamp_1 ./vendor/bin/phPhoto Booth.appApplications/Photo Booth.appBuild mysql token queryWhat's next:Choose provider nameTry Docker Debug forseamless, persistent aevugging coors u any concatner or tmage →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-ent|docker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski andcontributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%ED→Jiminny ...+tcusmecruusААНAНAI+. Stoyan TanevLo James Graham8. Stefka StoyanovaCo Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToastlahl100% <478•Fri 22 May 14:29:17Describe what you are looking forStoyan Tomov6 0• Messages+₴2283₴84285₴6$7488Add canvasO FilesMore~itoyan Tom.Monday, May 18th ~гросто че обикновени юзьри получават грешкасато отидат на Team Insights да видят чартовете-ukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Jukas Kovalik 2:27 PMздрасти1маш ли минутка, трябва ми малко помощ седин тикетчли когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848ira Cloud-Sidekick SMS issueE Bug SRD-6848 in Jira CloudStatusAssigneeIn ProgressLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov+АаFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory used...
|
71185
|
NULL
|
NULL
|
NULL
|
|
71186
|
NULL
|
0
|
2026-05-22T11:29:16.897145+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449356897_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449356897_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":24,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":24,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":24,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":24,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":24,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":24,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":24,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":24,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
5842536536765858165
|
-3514544834173860786
|
app_switch
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
PhostornPlatform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabINavicatecode00O JIMINNY@ For you(• Recent|# Starred•$ Apps• Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email logs⅘> Developer escalationsafs Slack integrationQ SearchCSOMOA100% L2 * FtzzMay 14-29-10O Ask Rovo ® Eô (< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71185
|
NULL
|
0
|
2026-05-22T11:29:16.783672+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449356783_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449356783_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":24,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":25,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2328456059403902036
|
-8107160014460086994
|
app_switch
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
PhpStormFileEditViewNavigateCodeLaravelRefactorRunToolsGitWindowAPP ()DOCKER0 81DEV (-zsh)О 882APP (-zsh)83tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode100644 app/Component/ES/QueuePriorityEnum.phpcreate mode100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdelete mode100611front-end/src/components/shared/AskAnything/testssnapshots/Ascreatemodetests,ComponentProcessorRedisEntityExtractorTest.phperidiraitTest.phnPS064|06406431or1iesLayS$I0963porSwitched toa new branch 'JY-20963-fix-import-on-deleted-entity)Slackdockerexec -itdocker_lamp_1 ./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistentdebugging tools in any container or image →Learn moreat https:://docs.docker.com/go/debug-cli/failed to connect to thedocker API at [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-ent)docker exec -it docker_lamp_1/vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimentalfeature and may be unstable,useitLoadedconfig default from-php-cs-fixer.dist.php"atyourownrisk.5691/5691100%Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemoryusedHelpHomeDMsActivityFiles+ED→Jiminny ...CHSIICCTIS# general# happy_birthday# jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office#support#thank-youslomolGalya Dimitrova "Nikolay Yankov®. Aneliya Angelova2. Stoyan Tanevdo James Graham8. Stefka StoyanovaCo Vasil Vasilev&: Todor StamatovLukas Kovalik y...AppsJira CloudToastlahl100% <478•Fri 22 May 14:29:16Describe what you are looking forStoyan TomovMessagesAdd canvas@ FilesMore v+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимTodayLukas Kovalik 2:27 PMздрастиимаш ли минутка, трябваNnttps://jiminny.atlassiaJira Cloud ™Sidekick SMS issueXE Bug SRD-6848 in ira CloulStatusAssigneeIn ProgressLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov+Aa...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71184
|
NULL
|
0
|
2026-05-22T11:29:15.062888+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449355062_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449355062_m2.jpg...
|
PhostornPlatform Sprint 4 Q2 - Platform Te-7 (JY-2 PhostornPlatform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabINavicatecode00O JIMINNY@ For you(• Recent|# Starred•$ Apps• Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email logs⅘> Developer escalationsafs Slack integrationQ SearchCSOMOA100% L2 ∞* FtzzMay 14.29.14O Ask Rovo ® Eô (< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
-7385004150644483939
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhostornPlatform Sprint 4 Q2 - Platform Te-7 (JY-2 PhostornPlatform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabINavicatecode00O JIMINNY@ For you(• Recent|# Starred•$ Apps• Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email logs⅘> Developer escalationsafs Slack integrationQ SearchCSOMOA100% L2 ∞* FtzzMay 14.29.14O Ask Rovo ® Eô (< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71181
|
NULL
|
NULL
|
NULL
|
|
71183
|
NULL
|
0
|
2026-05-22T11:29:14.026929+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449354026_m1.jpg...
|
PhpStorm
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449354026_m1.jpg...
|
Saving 'faVsco.js' settings
Cancel
Minimiz Saving 'faVsco.js' settings
Cancel
Minimize...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Saving 'faVsco.js' settings","depth":1,"bounds":{"left":0.36805555,"top":0.46222222,"width":0.2638889,"height":0.026666667},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.375,"top":0.5011111,"width":0.23333333,"height":0.018888889},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.61527777,"top":0.5011111,"width":0.0027777778,"height":0.018888889},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.375,"top":0.53555554,"width":0.23333333,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.61527777,"top":0.53555554,"width":0.0027777778,"height":0.018888889},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":1,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Minimize","depth":1,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-694385001992297597
|
7194573223250467852
|
visual_change
|
hybrid
|
NULL
|
Saving 'faVsco.js' settings
Cancel
Minimiz Saving 'faVsco.js' settings
Cancel
Minimize
SlackFileEditViewGoHistoryWindowHelpAPP ()DOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode100644 app/Component/ES/QueuePriorityEnum.phpcreate mode100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests_del nt~mada1AAGAA funntLhinn//__snapshots__/AsanntaenanchataIл-PS$131SvFirefoxdocker exec -itdocker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →at [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-ent)docker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitatLoaded config default from".php-cs-fixer.dist.php"yourownrisk.5691/5691100%Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedHomeDMsActivity→Jiminny ...CHIgMICCIIS# general# happy_birthday# jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support(all100% <78•Fri 22 May 14:29:13Describe what you are looking forStoyan TomovMessagesAdd canvasO FilesMore v+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимTodayLukas Kovalik 2:27 PMNNikolay Yankov®. Aneliya Angelova2. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y...AppsS Jira CloudToastSidekick SMS issueXE Bug SRD-6848 in ira CloudStatusAssigneeIn ProgressLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan Tomov...
|
71182
|
NULL
|
NULL
|
NULL
|
|
71182
|
NULL
|
0
|
2026-05-22T11:29:10.292313+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449350292_m1.jpg...
|
PhpStorm
|
faVsco.js – UpdateCrmFieldDataJob.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449350292_m1.jpg...
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const int LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
$search->loadCount('automatedReports');
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->withCount('automatedReports')->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
// Disable and orphan any AutomatedReports that use this search
$search->automatedReports()->withTrashed()->update([
'activity_search_id' => null,
'status' => false,
]);
// Delete filters and the search itself
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $integrationAdmin,
'providerSlug' => $team->getCrmConfiguration()->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const int LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $search->loadCount('automatedReports');\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->withCount('automatedReports')->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n // Disable and orphan any AutomatedReports that use this search\n $search->automatedReports()->withTrashed()->update([\n 'activity_search_id' => null,\n 'status' => false,\n ]);\n\n // Delete filters and the search itself\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $integrationAdmin,\n 'providerSlug' => $team->getCrmConfiguration()->getProviderName(),\n ]);\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n\n if ($coachingFeedback->delete()) {\n event(new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'delete-coaching-feedback',\n ));\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete operation failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const int LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $search->loadCount('automatedReports');\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->withCount('automatedReports')->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n // Disable and orphan any AutomatedReports that use this search\n $search->automatedReports()->withTrashed()->update([\n 'activity_search_id' => null,\n 'status' => false,\n ]);\n\n // Delete filters and the search itself\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $integrationAdmin,\n 'providerSlug' => $team->getCrmConfiguration()->getProviderName(),\n ]);\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n\n if ($coachingFeedback->delete()) {\n event(new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'delete-coaching-feedback',\n ));\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete operation failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Activity\\Import;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Integrations\\ImportCrmFieldDataForActivity;\nuse Jiminny\\Integrations\\PlaybookResolver;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Playbook;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Activity\\ActivityCrmFieldsResolver;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\BaseService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Psr\\Log\\LoggerInterface;\n\nclass UpdateCrmFieldDataJob implements ShouldQueue\n{\n use Dispatchable;\n use InteractsWithQueue;\n use Queueable;\n\n public int $tries = 3;\n\n private int $activityId;\n private Activity $activity;\n private LoggerInterface $logger;\n private ActivityCrmFieldsResolver $activityCrmFieldsResolver;\n\n public function __construct(int $activityId)\n {\n $this->activityId = $activityId;\n\n $this->onQueue(Constants::QUEUE_DIALERS);\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n public function handle(\n LoggerInterface $logger,\n ActivityCrmFieldsResolver $activityCrmFieldsResolver,\n ProviderRegistry $providerRegistry,\n ActivityRepository $activityRepo\n ): void {\n // Dependencies\n $this->logger = $logger;\n $this->activityCrmFieldsResolver = $activityCrmFieldsResolver;\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job started');\n\n if (! $this->validateActivity($activityRepo)) {\n return;\n }\n\n $this->bootstrapResolverCrmService($providerRegistry);\n $this->logger->info('[UpdateCrmFieldDataJob] Job bootstrapped for activity', [\n 'activity_id' => $this->activityId,\n ]);\n\n $user = $this->activity->getUser();\n $crmId = $this->activity->getCrmProviderId();\n\n $activityField = $this->getActivityField();\n if (is_null($activityField)) {\n return;\n }\n\n $crmObjectType = $this->getCrmObjectType($crmId, $activityField);\n\n /** @var Collection $crmFieldsCollection */\n $crmFieldsCollection = $this->activityCrmFieldsResolver->getCrmFieldWithCache($user, $crmObjectType);\n\n /** Resolve an external Crm Object that matches to the particular activity */\n $externalCrmObject = $this->activityCrmFieldsResolver->resolveCrmObject(\n $crmId,\n $crmObjectType,\n $crmFieldsCollection,\n $activityField\n );\n\n if (empty($externalCrmObject)) {\n $this->logger->info('[UpdateCrmFieldDataJob] External Crm Object is empty', [\n 'activity_id' => $this->activityId,\n 'crm_object_type' => $crmObjectType,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n ]);\n\n return;\n }\n\n $this->saveCrmFields($crmFieldsCollection, $externalCrmObject);\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job finished', [\n 'activity_id' => $this->activityId,\n ]);\n }\n\n private function saveCrmFields(Collection $crmFieldsCollection, array $externalCrmObject): void\n {\n $this->logger->info('[UpdateCrmFieldDataJob] Fetched external Crm Object.', [\n 'activity_id' => $this->activityId,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n 'external_crm_object' => $externalCrmObject,\n ]);\n\n $importCrmFields = app(ImportCrmFieldDataForActivity::class, [\n 'activity' => $this->activity,\n ]);\n\n $importCrmFields->save($crmFieldsCollection, $externalCrmObject);\n }\n\n private function validateActivity(ActivityRepository $activityRepo): bool\n {\n $activity = $activityRepo->findById($this->activityId);\n if (! $activity instanceof Activity) {\n $this->logger->warning('[UpdateCrmFieldDataJob] Cannot find activity, skipping', [\n 'activity_id' => $this->activityId,\n ]);\n\n return false;\n }\n\n $crmConfig = $activity->getCrm();\n if ($crmConfig->getProviderName() !== Activity::PROVIDER_SALESFORCE) {\n $this->logger->info('[UpdateCrmFieldDataJob] Job is applicable for Salesforce only, skipping', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n if (! $activity->hasCrmProviderId()) {\n $this->logger->info('[UpdateCrmFieldDataJob] Activity does not have crm provider id', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n $this->activity = $activity;\n\n return true;\n }\n\n private function getActivityField(): ?Field\n {\n $user = $this->activity->getUser();\n\n $playbookResolver = app(PlaybookResolver::class);\n $playbook = $playbookResolver->resolvePlaybookByUser($user);\n\n if (! $playbook instanceof Playbook) {\n $this->logger->info('[UpdateCrmFieldData] No playbook found, cannot match ActivityField', [\n 'activity_id' => $this->activity->getId(),\n 'user_id' => $user->getId(),\n ]);\n\n return null;\n }\n\n $activityField = $playbook->getActivityField() ?? null;\n\n if (is_null($activityField)) {\n $this->logger->info('[UpdateCrmFieldData] No activity field found for the playbook', [\n 'activity_id' => $this->activity->getId(),\n 'playbook_id' => $playbook->getId(),\n ]);\n }\n\n return $activityField;\n }\n\n private function getCrmObjectType(string $crmId, Field $activityField): string\n {\n $crmObjectType = $this->activityCrmFieldsResolver->getObjectType($crmId, $activityField);\n $this->logger->info('[UpdateCrmFieldDataJob] Crm Object type identified', [\n 'activity_id' => $this->activityId,\n 'crm_id' => $crmId,\n 'crm_object_type' => $crmObjectType,\n ]);\n\n return $crmObjectType;\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n private function bootstrapResolverCrmService(ProviderRegistry $providerRegistry): void\n {\n $team = $this->activity->getUser()->getTeam();\n $crmProviderName = $this->activity->getCrm()->getProviderName();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $crmProviderName,\n ]);\n\n /** @var BaseService|ServiceInterface $crmService */\n $crmService = $crmResolver->prepareCrmService();\n\n $this->activityCrmFieldsResolver->setCrmService($crmService);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Activity\\Import;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Integrations\\ImportCrmFieldDataForActivity;\nuse Jiminny\\Integrations\\PlaybookResolver;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Playbook;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Activity\\ActivityCrmFieldsResolver;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\BaseService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Psr\\Log\\LoggerInterface;\n\nclass UpdateCrmFieldDataJob implements ShouldQueue\n{\n use Dispatchable;\n use InteractsWithQueue;\n use Queueable;\n\n public int $tries = 3;\n\n private int $activityId;\n private Activity $activity;\n private LoggerInterface $logger;\n private ActivityCrmFieldsResolver $activityCrmFieldsResolver;\n\n public function __construct(int $activityId)\n {\n $this->activityId = $activityId;\n\n $this->onQueue(Constants::QUEUE_DIALERS);\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n public function handle(\n LoggerInterface $logger,\n ActivityCrmFieldsResolver $activityCrmFieldsResolver,\n ProviderRegistry $providerRegistry,\n ActivityRepository $activityRepo\n ): void {\n // Dependencies\n $this->logger = $logger;\n $this->activityCrmFieldsResolver = $activityCrmFieldsResolver;\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job started');\n\n if (! $this->validateActivity($activityRepo)) {\n return;\n }\n\n $this->bootstrapResolverCrmService($providerRegistry);\n $this->logger->info('[UpdateCrmFieldDataJob] Job bootstrapped for activity', [\n 'activity_id' => $this->activityId,\n ]);\n\n $user = $this->activity->getUser();\n $crmId = $this->activity->getCrmProviderId();\n\n $activityField = $this->getActivityField();\n if (is_null($activityField)) {\n return;\n }\n\n $crmObjectType = $this->getCrmObjectType($crmId, $activityField);\n\n /** @var Collection $crmFieldsCollection */\n $crmFieldsCollection = $this->activityCrmFieldsResolver->getCrmFieldWithCache($user, $crmObjectType);\n\n /** Resolve an external Crm Object that matches to the particular activity */\n $externalCrmObject = $this->activityCrmFieldsResolver->resolveCrmObject(\n $crmId,\n $crmObjectType,\n $crmFieldsCollection,\n $activityField\n );\n\n if (empty($externalCrmObject)) {\n $this->logger->info('[UpdateCrmFieldDataJob] External Crm Object is empty', [\n 'activity_id' => $this->activityId,\n 'crm_object_type' => $crmObjectType,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n ]);\n\n return;\n }\n\n $this->saveCrmFields($crmFieldsCollection, $externalCrmObject);\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job finished', [\n 'activity_id' => $this->activityId,\n ]);\n }\n\n private function saveCrmFields(Collection $crmFieldsCollection, array $externalCrmObject): void\n {\n $this->logger->info('[UpdateCrmFieldDataJob] Fetched external Crm Object.', [\n 'activity_id' => $this->activityId,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n 'external_crm_object' => $externalCrmObject,\n ]);\n\n $importCrmFields = app(ImportCrmFieldDataForActivity::class, [\n 'activity' => $this->activity,\n ]);\n\n $importCrmFields->save($crmFieldsCollection, $externalCrmObject);\n }\n\n private function validateActivity(ActivityRepository $activityRepo): bool\n {\n $activity = $activityRepo->findById($this->activityId);\n if (! $activity instanceof Activity) {\n $this->logger->warning('[UpdateCrmFieldDataJob] Cannot find activity, skipping', [\n 'activity_id' => $this->activityId,\n ]);\n\n return false;\n }\n\n $crmConfig = $activity->getCrm();\n if ($crmConfig->getProviderName() !== Activity::PROVIDER_SALESFORCE) {\n $this->logger->info('[UpdateCrmFieldDataJob] Job is applicable for Salesforce only, skipping', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n if (! $activity->hasCrmProviderId()) {\n $this->logger->info('[UpdateCrmFieldDataJob] Activity does not have crm provider id', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n $this->activity = $activity;\n\n return true;\n }\n\n private function getActivityField(): ?Field\n {\n $user = $this->activity->getUser();\n\n $playbookResolver = app(PlaybookResolver::class);\n $playbook = $playbookResolver->resolvePlaybookByUser($user);\n\n if (! $playbook instanceof Playbook) {\n $this->logger->info('[UpdateCrmFieldData] No playbook found, cannot match ActivityField', [\n 'activity_id' => $this->activity->getId(),\n 'user_id' => $user->getId(),\n ]);\n\n return null;\n }\n\n $activityField = $playbook->getActivityField() ?? null;\n\n if (is_null($activityField)) {\n $this->logger->info('[UpdateCrmFieldData] No activity field found for the playbook', [\n 'activity_id' => $this->activity->getId(),\n 'playbook_id' => $playbook->getId(),\n ]);\n }\n\n return $activityField;\n }\n\n private function getCrmObjectType(string $crmId, Field $activityField): string\n {\n $crmObjectType = $this->activityCrmFieldsResolver->getObjectType($crmId, $activityField);\n $this->logger->info('[UpdateCrmFieldDataJob] Crm Object type identified', [\n 'activity_id' => $this->activityId,\n 'crm_id' => $crmId,\n 'crm_object_type' => $crmObjectType,\n ]);\n\n return $crmObjectType;\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n private function bootstrapResolverCrmService(ProviderRegistry $providerRegistry): void\n {\n $team = $this->activity->getUser()->getTeam();\n $crmProviderName = $this->activity->getCrm()->getProviderName();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $crmProviderName,\n ]);\n\n /** @var BaseService|ServiceInterface $crmService */\n $crmService = $crmResolver->prepareCrmService();\n\n $this->activityCrmFieldsResolver->setCrmService($crmService);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7923116779312214135
|
-8385861082218261356
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const int LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
$search->loadCount('automatedReports');
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->withCount('automatedReports')->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
// Disable and orphan any AutomatedReports that use this search
$search->automatedReports()->withTrashed()->update([
'activity_search_id' => null,
'status' => false,
]);
// Delete filters and the search itself
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $integrationAdmin,
'providerSlug' => $team->getCrmConfiguration()->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71181
|
NULL
|
0
|
2026-05-22T11:28:56.636463+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449336636_m2.jpg...
|
PhpStorm
|
faVsco.js – UpdateCrmFieldDataJob.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449336636_m2.jpg...
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const int LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
$search->loadCount('automatedReports');
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->withCount('automatedReports')->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
// Disable and orphan any AutomatedReports that use this search
$search->automatedReports()->withTrashed()->update([
'activity_search_id' => null,
'status' => false,
]);
// Delete filters and the search itself
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $integrationAdmin,
'providerSlug' => $team->getCrmConfiguration()->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const int LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $search->loadCount('automatedReports');\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->withCount('automatedReports')->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n // Disable and orphan any AutomatedReports that use this search\n $search->automatedReports()->withTrashed()->update([\n 'activity_search_id' => null,\n 'status' => false,\n ]);\n\n // Delete filters and the search itself\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $integrationAdmin,\n 'providerSlug' => $team->getCrmConfiguration()->getProviderName(),\n ]);\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n\n if ($coachingFeedback->delete()) {\n event(new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'delete-coaching-feedback',\n ));\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete operation failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"bounds":{"left":0.16223404,"top":0.24581006,"width":0.33676863,"height":0.75418997},"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const int LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $search->loadCount('automatedReports');\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->withCount('automatedReports')->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n // Disable and orphan any AutomatedReports that use this search\n $search->automatedReports()->withTrashed()->update([\n 'activity_search_id' => null,\n 'status' => false,\n ]);\n\n // Delete filters and the search itself\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $integrationAdmin,\n 'providerSlug' => $team->getCrmConfiguration()->getProviderName(),\n ]);\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n\n if ($coachingFeedback->delete()) {\n event(new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'delete-coaching-feedback',\n ));\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete operation failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Activity\\Import;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Integrations\\ImportCrmFieldDataForActivity;\nuse Jiminny\\Integrations\\PlaybookResolver;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Playbook;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Activity\\ActivityCrmFieldsResolver;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\BaseService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Psr\\Log\\LoggerInterface;\n\nclass UpdateCrmFieldDataJob implements ShouldQueue\n{\n use Dispatchable;\n use InteractsWithQueue;\n use Queueable;\n\n public int $tries = 3;\n\n private int $activityId;\n private Activity $activity;\n private LoggerInterface $logger;\n private ActivityCrmFieldsResolver $activityCrmFieldsResolver;\n\n public function __construct(int $activityId)\n {\n $this->activityId = $activityId;\n\n $this->onQueue(Constants::QUEUE_DIALERS);\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n public function handle(\n LoggerInterface $logger,\n ActivityCrmFieldsResolver $activityCrmFieldsResolver,\n ProviderRegistry $providerRegistry,\n ActivityRepository $activityRepo\n ): void {\n // Dependencies\n $this->logger = $logger;\n $this->activityCrmFieldsResolver = $activityCrmFieldsResolver;\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job started');\n\n if (! $this->validateActivity($activityRepo)) {\n return;\n }\n\n $this->bootstrapResolverCrmService($providerRegistry);\n $this->logger->info('[UpdateCrmFieldDataJob] Job bootstrapped for activity', [\n 'activity_id' => $this->activityId,\n ]);\n\n $user = $this->activity->getUser();\n $crmId = $this->activity->getCrmProviderId();\n\n $activityField = $this->getActivityField();\n if (is_null($activityField)) {\n return;\n }\n\n $crmObjectType = $this->getCrmObjectType($crmId, $activityField);\n\n /** @var Collection $crmFieldsCollection */\n $crmFieldsCollection = $this->activityCrmFieldsResolver->getCrmFieldWithCache($user, $crmObjectType);\n\n /** Resolve an external Crm Object that matches to the particular activity */\n $externalCrmObject = $this->activityCrmFieldsResolver->resolveCrmObject(\n $crmId,\n $crmObjectType,\n $crmFieldsCollection,\n $activityField\n );\n\n if (empty($externalCrmObject)) {\n $this->logger->info('[UpdateCrmFieldDataJob] External Crm Object is empty', [\n 'activity_id' => $this->activityId,\n 'crm_object_type' => $crmObjectType,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n ]);\n\n return;\n }\n\n $this->saveCrmFields($crmFieldsCollection, $externalCrmObject);\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job finished', [\n 'activity_id' => $this->activityId,\n ]);\n }\n\n private function saveCrmFields(Collection $crmFieldsCollection, array $externalCrmObject): void\n {\n $this->logger->info('[UpdateCrmFieldDataJob] Fetched external Crm Object.', [\n 'activity_id' => $this->activityId,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n 'external_crm_object' => $externalCrmObject,\n ]);\n\n $importCrmFields = app(ImportCrmFieldDataForActivity::class, [\n 'activity' => $this->activity,\n ]);\n\n $importCrmFields->save($crmFieldsCollection, $externalCrmObject);\n }\n\n private function validateActivity(ActivityRepository $activityRepo): bool\n {\n $activity = $activityRepo->findById($this->activityId);\n if (! $activity instanceof Activity) {\n $this->logger->warning('[UpdateCrmFieldDataJob] Cannot find activity, skipping', [\n 'activity_id' => $this->activityId,\n ]);\n\n return false;\n }\n\n $crmConfig = $activity->getCrm();\n if ($crmConfig->getProviderName() !== Activity::PROVIDER_SALESFORCE) {\n $this->logger->info('[UpdateCrmFieldDataJob] Job is applicable for Salesforce only, skipping', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n if (! $activity->hasCrmProviderId()) {\n $this->logger->info('[UpdateCrmFieldDataJob] Activity does not have crm provider id', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n $this->activity = $activity;\n\n return true;\n }\n\n private function getActivityField(): ?Field\n {\n $user = $this->activity->getUser();\n\n $playbookResolver = app(PlaybookResolver::class);\n $playbook = $playbookResolver->resolvePlaybookByUser($user);\n\n if (! $playbook instanceof Playbook) {\n $this->logger->info('[UpdateCrmFieldData] No playbook found, cannot match ActivityField', [\n 'activity_id' => $this->activity->getId(),\n 'user_id' => $user->getId(),\n ]);\n\n return null;\n }\n\n $activityField = $playbook->getActivityField() ?? null;\n\n if (is_null($activityField)) {\n $this->logger->info('[UpdateCrmFieldData] No activity field found for the playbook', [\n 'activity_id' => $this->activity->getId(),\n 'playbook_id' => $playbook->getId(),\n ]);\n }\n\n return $activityField;\n }\n\n private function getCrmObjectType(string $crmId, Field $activityField): string\n {\n $crmObjectType = $this->activityCrmFieldsResolver->getObjectType($crmId, $activityField);\n $this->logger->info('[UpdateCrmFieldDataJob] Crm Object type identified', [\n 'activity_id' => $this->activityId,\n 'crm_id' => $crmId,\n 'crm_object_type' => $crmObjectType,\n ]);\n\n return $crmObjectType;\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n private function bootstrapResolverCrmService(ProviderRegistry $providerRegistry): void\n {\n $team = $this->activity->getUser()->getTeam();\n $crmProviderName = $this->activity->getCrm()->getProviderName();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $crmProviderName,\n ]);\n\n /** @var BaseService|ServiceInterface $crmService */\n $crmService = $crmResolver->prepareCrmService();\n\n $this->activityCrmFieldsResolver->setCrmService($crmService);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Activity\\Import;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Integrations\\ImportCrmFieldDataForActivity;\nuse Jiminny\\Integrations\\PlaybookResolver;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Playbook;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Activity\\ActivityCrmFieldsResolver;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\BaseService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Psr\\Log\\LoggerInterface;\n\nclass UpdateCrmFieldDataJob implements ShouldQueue\n{\n use Dispatchable;\n use InteractsWithQueue;\n use Queueable;\n\n public int $tries = 3;\n\n private int $activityId;\n private Activity $activity;\n private LoggerInterface $logger;\n private ActivityCrmFieldsResolver $activityCrmFieldsResolver;\n\n public function __construct(int $activityId)\n {\n $this->activityId = $activityId;\n\n $this->onQueue(Constants::QUEUE_DIALERS);\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n public function handle(\n LoggerInterface $logger,\n ActivityCrmFieldsResolver $activityCrmFieldsResolver,\n ProviderRegistry $providerRegistry,\n ActivityRepository $activityRepo\n ): void {\n // Dependencies\n $this->logger = $logger;\n $this->activityCrmFieldsResolver = $activityCrmFieldsResolver;\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job started');\n\n if (! $this->validateActivity($activityRepo)) {\n return;\n }\n\n $this->bootstrapResolverCrmService($providerRegistry);\n $this->logger->info('[UpdateCrmFieldDataJob] Job bootstrapped for activity', [\n 'activity_id' => $this->activityId,\n ]);\n\n $user = $this->activity->getUser();\n $crmId = $this->activity->getCrmProviderId();\n\n $activityField = $this->getActivityField();\n if (is_null($activityField)) {\n return;\n }\n\n $crmObjectType = $this->getCrmObjectType($crmId, $activityField);\n\n /** @var Collection $crmFieldsCollection */\n $crmFieldsCollection = $this->activityCrmFieldsResolver->getCrmFieldWithCache($user, $crmObjectType);\n\n /** Resolve an external Crm Object that matches to the particular activity */\n $externalCrmObject = $this->activityCrmFieldsResolver->resolveCrmObject(\n $crmId,\n $crmObjectType,\n $crmFieldsCollection,\n $activityField\n );\n\n if (empty($externalCrmObject)) {\n $this->logger->info('[UpdateCrmFieldDataJob] External Crm Object is empty', [\n 'activity_id' => $this->activityId,\n 'crm_object_type' => $crmObjectType,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n ]);\n\n return;\n }\n\n $this->saveCrmFields($crmFieldsCollection, $externalCrmObject);\n\n $this->logger->info('[UpdateCrmFieldDataJob] Job finished', [\n 'activity_id' => $this->activityId,\n ]);\n }\n\n private function saveCrmFields(Collection $crmFieldsCollection, array $externalCrmObject): void\n {\n $this->logger->info('[UpdateCrmFieldDataJob] Fetched external Crm Object.', [\n 'activity_id' => $this->activityId,\n 'crm_provider_id' => $this->activity->getCrmProviderId(),\n 'external_crm_object' => $externalCrmObject,\n ]);\n\n $importCrmFields = app(ImportCrmFieldDataForActivity::class, [\n 'activity' => $this->activity,\n ]);\n\n $importCrmFields->save($crmFieldsCollection, $externalCrmObject);\n }\n\n private function validateActivity(ActivityRepository $activityRepo): bool\n {\n $activity = $activityRepo->findById($this->activityId);\n if (! $activity instanceof Activity) {\n $this->logger->warning('[UpdateCrmFieldDataJob] Cannot find activity, skipping', [\n 'activity_id' => $this->activityId,\n ]);\n\n return false;\n }\n\n $crmConfig = $activity->getCrm();\n if ($crmConfig->getProviderName() !== Activity::PROVIDER_SALESFORCE) {\n $this->logger->info('[UpdateCrmFieldDataJob] Job is applicable for Salesforce only, skipping', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n if (! $activity->hasCrmProviderId()) {\n $this->logger->info('[UpdateCrmFieldDataJob] Activity does not have crm provider id', [\n 'activity_id' => $this->activityId,\n 'crm_provider' => $crmConfig->getProviderName(),\n ]);\n\n return false;\n }\n\n $this->activity = $activity;\n\n return true;\n }\n\n private function getActivityField(): ?Field\n {\n $user = $this->activity->getUser();\n\n $playbookResolver = app(PlaybookResolver::class);\n $playbook = $playbookResolver->resolvePlaybookByUser($user);\n\n if (! $playbook instanceof Playbook) {\n $this->logger->info('[UpdateCrmFieldData] No playbook found, cannot match ActivityField', [\n 'activity_id' => $this->activity->getId(),\n 'user_id' => $user->getId(),\n ]);\n\n return null;\n }\n\n $activityField = $playbook->getActivityField() ?? null;\n\n if (is_null($activityField)) {\n $this->logger->info('[UpdateCrmFieldData] No activity field found for the playbook', [\n 'activity_id' => $this->activity->getId(),\n 'playbook_id' => $playbook->getId(),\n ]);\n }\n\n return $activityField;\n }\n\n private function getCrmObjectType(string $crmId, Field $activityField): string\n {\n $crmObjectType = $this->activityCrmFieldsResolver->getObjectType($crmId, $activityField);\n $this->logger->info('[UpdateCrmFieldDataJob] Crm Object type identified', [\n 'activity_id' => $this->activityId,\n 'crm_id' => $crmId,\n 'crm_object_type' => $crmObjectType,\n ]);\n\n return $crmObjectType;\n }\n\n /**\n * @throws SocialAccountTokenInvalidException\n */\n private function bootstrapResolverCrmService(ProviderRegistry $providerRegistry): void\n {\n $team = $this->activity->getUser()->getTeam();\n $crmProviderName = $this->activity->getCrm()->getProviderName();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $crmProviderName,\n ]);\n\n /** @var BaseService|ServiceInterface $crmService */\n $crmService = $crmResolver->prepareCrmService();\n\n $this->activityCrmFieldsResolver->setCrmService($crmService);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7923116779312214135
|
-8385861082218261356
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const int LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
$search->loadCount('automatedReports');
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->withCount('automatedReports')->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
// Disable and orphan any AutomatedReports that use this search
$search->automatedReports()->withTrashed()->update([
'activity_search_id' => null,
'status' => false,
]);
// Delete filters and the search itself
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $integrationAdmin,
'providerSlug' => $team->getCrmConfiguration()->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71180
|
NULL
|
0
|
2026-05-22T11:28:53.775530+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449333775_m2.jpg...
|
PhpStorm
|
faVsco.js – UpdateCrmFieldDataJob.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449333775_m2.jpg...
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8101791824998039176
|
-8348547798392525882
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
PhostormcodeFV faVsco.js°9 master kroledeyC) CalendarController.onpkeporcontroller.onpc SoftohoneWebhookController.ongy Aostrdetcontroller.onpcommentcontexunterrace.onpoconterencesoeunourcontroller.ong© Controller.php€ ExportController.php© FrontendController.php© FrontendControllerTrait.phpGeocodingController.phpc) Healtncheckcontroller.onpLiveCoachController.phpgMissing leamController.php© MobileController.phpc)NotificationController.ohv© NotificationProviderController.php€ PlavbackController.php@ PlavlistController.ohpc) Pushercontroller.ono@ SlackController.ohp9 SupportController.php€ TeamSetunController.phn© UserAutomatedReportsController.php@ WelcomeController.phpM Middlewarem RequecteD Responses( SerializercD Transformers(e) Kernel.phpT PlaylistTrackResourceTrait.php© ValidateCrmConnectionRequiredTrait.php> O IntearationsMintorantinndv D Jobsv @ Activity>C Dialpadv W Importc) createParticioants.ono© DownloadTrack.phpC) HvdrateCrmDataBvExternalCallid.Job.@ ImportCall.ohoC) ImoortSxternalActivitv.oho© ImportTwilioVideoSpeechesJob.phpCIsActivitvReadv=orProcessina.lob.ohv(c) MatchermData.nho@)Undatecrmsieldbata.loh.nhn@ UndateCustomCrmFieldData.loh nhn> M.luctCalli"C ActivitvController.ohrsavercuvity.ongosyncriannat.pnp© SyncToPlanhat.php©PlaybackController.phppnp api.phpC) CreateSmsSentEvent.phpC) PlanhatActivityListener.pho(C) AskAnythingPromptService.pho(C) AutomatedReportsRepositorv.php(C) AutomatedReportsCommand.phpphp api v2.phpC) RequestGenerateReportJob.pho(C) AutomatedReportResult.php(C) AutomatedReport.oho<nhnnamesnace liminnv Httn ControllensApTIuse cardon carbonuse ChaseConey \LaravelDatadogHelper\Datadog;use cxception,use euLuninace Auchaccess auchorizaclonexceptzon.use 1uluminare varabase cloouent bullder.use 1uluminare nuup sonkesponseuse ILLuminate Hctp requestuse 1lluminate support collectionuse 1lluminate support racades Loouse 1LLuminate validation kuleuse 1LLuminate validation kules 1n^useLuminate vauicatzon valoationexcentionsuse Jiminny Comoonent ActivitvAnalvtics:use Jiminny Component \ActivitySearch\F1lterDefinitionColLection;luse _Jiminnv|Contracts\ES\Events|UodateSingleFntitv•use Jiminnv Contracts ES UndateTaraetEnum:use Jiminnv Contracts Nudae NudaeSactorvIntenface:use Jiminnv Contracts Plavlist PlavlistTrackFactorvInterface:use Jiminny\Contracts\Repositories \PlaylistActivityRepository:use Jiminnv Contracts Services Crm. ServiceIntenface:use Jiminny\Enums \TeamSetting:use Jiminny\Events \Activities\AiAutomation\ActivityProspectAdded;use Jiminny Events \Activities\Coaching\Coached:use Jiminny Contracts\Services\Crm\Supports0bjectTypeParseInterface:use Jiminny cxcepcions Loq1ctxcepc1on*use Jiminny Excentions SocialsccounttokenInvalidEycontion:use Jiminny Http\Controllers\API\BaseController as Controller:use Jiminny Http\Controllers\CommentContextInterface:use Jiminny Http kesponses Ap1 Abstracckesponse*use Jiminny Htto responses Aot kesponseruse Jimnny Htto sertauzzers sonserzauzer:use Jiminny Htto Transformers ActivitycommentTransformer:use Jiminny Htto Transformers ActavitvTooictriggertransformeruse Jiminny Htto Transformers Actavitviransformer:| 11— 55108=109=123_1241861— 187= custom.log= laravel.log« SF jiminny@localhost]4 HS_local [jiminny@localhost]& console [PROD]C) TextMessag(C) MatchCrmData.onpUpdatecrmrielaDataJob.onpxUpdateSalesforceAccount.ph# console SlAGiNGclass UpdateCrmFieldDataJob implements ShouldQueuepubLic 1nt Stries = 5*10 usages.orivate int sactivitvid'private Activity Sactivity;12 usaaesprivate LoggerInterface $logger;private ActivityCrmFieldsResolver SactivityCrmFieldsResolver:public function __construct(int $activityId)i...}* Othrows SocialAccountTokenInvalidExceptionpublic function handle(Loccerinterrace slooderProviderkeq1stry sproviderkeq1stry.ActivityRepository SactivityRepo): void {...}private function saveCrmFields(Collection ScrmFieldsCollection. arrav SexternalCrm0biect): void{...}orivate function validate.ctivity ActivitvRepositorv sactivitvReno:000l....nrivate function detActivitv.ie.do. sieldk..private function getCrm0bjectType(string $crmId, Field $activityField): string{...}* @throws SocialAccountTokenInvalidException*/Tusageprivate function bootstrapResolverCrmService(ProviderRegistry $providerRegistry): void{...}1 1 of 3 edits JAccept File & X Reject File 4%g+ 3 of 6 files →100% 2• Fri 22 May 14:28:53AskJiminnyReportActivityServiceTest vCascadeInvestigate Foreign KeSalestorce Token Fallb+0..UodateCrmFieldDataJob.ohpRead CreateActivitv=romUoloadService.oho• CreateActivityFromUploadService.phpCreateActivitv=romUoloadService.onol+6-21Now the medium priority nemsRead UpdateSalesforceAccount.php" UodateSalesforceAccount.ohol• UpdateSalesforceAccount.php+16 -6Now the ActivityController opportunity sync:Explored ActivityController.php and searched z queries• ActivityController.ohpActivityController.php+7 -76/6 tasks done >All 6 places have been updated to use CrmOwnerResolver with fallback to other team members tokens when theadminlowner tokon ic invalidlSummary of ChangesHigh Priority - Same root cause as Twilio1. MatchCrmData.oho: 179-194 - Critical iob for matchina CRM data on dialer recordinas2. HydrateCrmDataByExternalCallIdJob.php: 60-76 - Hydrates CRM data by external call ID (Amazon Connect)3. UodateCrmFieldDataJob.oho:202-217 - Uodates CRM field data on activities4. CreateActivityFromUploadService.php:113-119 - Parses CRM records for uploaded recordingsMedium Prioritv5.UndateSalesforceAccount.nhn:28-44 - Undates Salestorce account on team chanaes.6. ActivityController.php:1177-1192 - Syncs opportunity on activity viewPattern Used1. Creates a CrmownerResolver with the team and intended admin2. Calls prepareCrmService() which tries the admin first, then falls back to team members with active tokens (orderedView allapp/Listeners/Teams/# UpdateSalesforceAccount.pho +16-5app/Jobs/Activity/Import/@ MatchCrmData.php +9 -4app/Component/Uploader/Services/ D CreateActivityFromUploadService.php +7 -2annllohe/Activitvllmnort/ MLIndatoCrmGioldData.lob.nhntg.ann/lobs/Activitv/Imnort/ M HvdrateCrmDataRvSyternalCallid.loh.ohn18gapo/Htto/Controllers/AP//[M ActivitvController.ohv +8* Reiect alliiAccent alliAsk anvthina (884-L)<> Code Claude Qnus 4.7 MediumWN Windsurf Toams 22-1UTF.8io 4 spaces...
|
71179
|
NULL
|
NULL
|
NULL
|
|
71179
|
NULL
|
0
|
2026-05-22T11:28:50.295973+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449330295_m2.jpg...
|
PhpStorm
|
faVsco.js – UpdateCrmFieldDataJob.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449330295_m2.jpg...
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const int LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
$search->loadCount('automatedReports');
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->withCount('automatedReports')->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
// Disable and orphan any AutomatedReports that use this search
$search->automatedReports()->withTrashed()->update([
'activity_search_id' => null,
'status' => false,
]);
// Delete filters and the search itself
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $integrationAdmin,
'providerSlug' => $team->getCrmConfiguration()->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const int LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $search->loadCount('automatedReports');\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->withCount('automatedReports')->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n // Disable and orphan any AutomatedReports that use this search\n $search->automatedReports()->withTrashed()->update([\n 'activity_search_id' => null,\n 'status' => false,\n ]);\n\n // Delete filters and the search itself\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $integrationAdmin,\n 'providerSlug' => $team->getCrmConfiguration()->getProviderName(),\n ]);\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n\n if ($coachingFeedback->delete()) {\n event(new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'delete-coaching-feedback',\n ));\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete operation failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"bounds":{"left":0.16223404,"top":0.24581006,"width":0.33676863,"height":0.75418997},"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const int LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $search->loadCount('automatedReports');\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->withCount('automatedReports')->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n // Disable and orphan any AutomatedReports that use this search\n $search->automatedReports()->withTrashed()->update([\n 'activity_search_id' => null,\n 'status' => false,\n ]);\n\n // Delete filters and the search itself\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $integrationAdmin,\n 'providerSlug' => $team->getCrmConfiguration()->getProviderName(),\n ]);\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n\n if ($coachingFeedback->delete()) {\n event(new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'delete-coaching-feedback',\n ));\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete operation failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7923116779312214135
|
-8385861082218261356
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const int LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
$search->loadCount('automatedReports');
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->withCount('automatedReports')->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
// Disable and orphan any AutomatedReports that use this search
$search->automatedReports()->withTrashed()->update([
'activity_search_id' => null,
'status' => false,
]);
// Delete filters and the search itself
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$integrationAdmin = $user->isCrmRequired() ? $user : $team->getOwner();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $integrationAdmin,
'providerSlug' => $team->getCrmConfiguration()->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71178
|
NULL
|
0
|
2026-05-22T11:28:47.666241+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449327666_m2.jpg...
|
PhpStorm
|
faVsco.js – ActivityController.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449327666_m2.jpg...
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-4235983745889776938
|
-8204421443435123770
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
PhostormFV faVsco.jsProiect v© UploadController.pnp© ActionitemsController.php© ActivityController.phpcAicrmnotescontroller.onpbasecontroller.onpc) Clientl okencontroller.ono© CrmController.phpC) DealLevelPromptscontroller.php© DealRiskcontroller.php©)Instantmeetingcontroller.phoC) LanquageController.phpC)LavoutManagementcontroller.ohoP LiveFeedController.ohnC)Meetinascontroller.onoC) MessageController.ohoC) MetadataController.oho© MobileSettingsController.phpC)MomentController.oho9) NudaeController nhnYc) NumberAllocatorControlier nhnlOrganizationLicensesController.php© OrganizationMembersController.php© OrganizationRetentionPolicyController© OrganizationRolesController.php© OrganizationSyncController.phpDartnerController.onp© PhoneNumberController.php€ PlaybackController.php© PlaylistController.php0) ScimController.php© SidekickController.php€ SoftphoneController.phpc) ssocontroller.phpc) subscriptionController.phpc)TeamalAutomationcontroller.onoC)TeamAiContextController.onog TeamController.ohpC) TeaminsiahtsController.ohoC) TranscriotionController.ohoC) TranslationController.onoC) UserController. ohni@ VocabularvController.ohn>M AuthMGustomerAniM internal• D Kiosk• MTeamc@ ActivitvController.php© AutomatedReportsController.php(e) NachhoardControllor nhn(e)ImnersonationController.phosavercuvity.ong•PurgeLookupcache.pnposyncriannat.pnp© SyncToPlanhat.php©PlaybackController.phppnp api.phpC) CreateSmsSentEvent.php(C) PlanhatActivityListener.pho(C) AskAnythingPromptService.pho(C) AutomatedReportsRepositorv.php(C) AutomatedReportsCommand.phpphp api v2.phpC) RequestGenerateReportJob.pho(C) AutomatedReportResult.php©AutomatedReport.ohpk?phpnamesnace liminnv Httn ControllensApTIuse cardon carbonuse ChaseConey \LaravelDatadogHelper\Datadog;use cxception,use euLuninace Auch access auchorizaclonexception.use 1uluminare varabase cloouent bullder.use Iuluminace nuup usonkesponseuse ILLuminate Hctp requestuse 1lluminate support collectionuse 1lluminate support racades Loouse 1LLuminate validation kuleuse 1LLuminate validation kules 1n^useLuminate vauicatzon valoationexcentionsuse Jiminny Comoonent ActivitvAnalvtics:use Jiminny Component \ActivitySearch\F1lterDefinitionColLection;luse _Jiminnv|Contracts\ES\Events|UodateSingleFntitv•use Jiminnv Contracts ES UndateTaraetEnum:use Jiminnv Contracts Nudae NudaeSactorvIntenface:use Jiminnv Contracts Plavlist PlavlistTrackFactorvInterface:use Jiminny\Contracts\Repositories \PlaylistActivityRepository:use Jiminnv Contracts Services Crm. ServiceIntenface:use Jiminny\Enums \TeamSetting:use Jiminny\Events \Activities\AiAutomation\ActivityProspectAdded;use Jiminny Events \Activities\Coaching\Coached:use Jiminny Contracts\Services\Crm\Supports0bjectTypeParseInterface:use Jiminny cxcepcions Loq1ctxcepc1on*use Jiminny Exceptions SocialAccountTokenTnvalidFycention•use Jiminny Http\Controllers\API\BaseController as Controller:use Jiminny Http\Controllers\CommentContextInterface:use Jiminny Http kesponses Ap1 Abstracckesponse*use Jiminny Htto responses Aot kesponseruse Jimnny Htto sertauzzers usonserzauzer:use Jiminny Htto Transformers ActivitycommentTransformer:use Jiminny HttpWraasforiêrs. Ac vAccept File 3- a% Reject EileoRmer. * 6 of 6 files →use Jiminny\Http\Transformers\ActivityTransformer13 (= laravel.log« SF jiminny@localhost]4 HS_local [jiminny@localhost]& console [PROD](C) MatchCrmData.onp© UpdateCrmFieldDataJob.php# console SlAGiNGuse ILLuminate Contracts Queue Shoulduueue:final readonlv class UodateSalesforceAccount imolements ShouldOueueoublic functionorivate ProviderRegistry ScrmRegistry..private LoggerInterface $logger,D1..}public function handle(TeamCreated|TeamUpdated Sevent): void$teamCreator = $event->teamCreator;if (Sevent->team->account_id === null || $teamCreator === null) {ScrmService = $this->crmRegistry->get($teamCreator->getTeam->getCrmConfiguration->getProviderNamesteam = steamureator->oereamorSintearationAdmin = SteCreator->isCrmRequiredO 2 SteamCreator : Steam->qetOwnerO:if (SteamCreator->isCrmRequired)scrmservice-›secusersceancreacorr} else {scrmservice->setuserreamcreator->oetleamo->qetuwneron:tryfScrmResolver = app( abstract: Crm0wnerResolver::class.'providerSlug' => Steam->getCrmConfiguration->qetProviderNameO} catch (Exception $e) {sthas->loqger->infol'Attemot to resolve CRi service for "sevent->team->cetluldo tarled.".'excention' => se->cetcode0.itny sSevent->team->account->aptCrmPnovidenTd0'Jiminny_Client_ID__c' => Sevent->team->getUuidO=> Sevent->team->getTier->getTitleO,100% 52• Fri 22 May 14:28:47AskJiminnyReportActivityServiceTest vCascadeInvestigate Foreign KeSalestorce Token Fallb+0..UodateCrmFieldDataJob.pho+7 -2Read CreateActivitv=romUoloadService.ono• CreateActivityFromUploadService.phpCreateActivitv=romUoloadService.onol+6-21Now the medium priority nemsRead UpdateSalesforceAccount.php" UodateSalesforceAccount.ohol• UpdateSalesforceAccount.php+16 -6Now the ActivityController opportunity sync:Explored ActivityController.php and searched z queries• ActivityController.ohpActivityController.php+7 -76/6 tasks done >All 6 places have been updated to use CrmOwnerResolver with fallback to other team members tokens when theadminlowner token ic invalidlSummary of ChangesHigh Priority - Same root cause as Twilio1. MatchCrmData.oho: 179-194 - Critical iob for matchina CRM data on dialer recordinas2. HydrateCrmDataByExternalCallIdJob.php: 60-76 - Hydrates CRM data by external call ID (Amazon Connect)3. UodateCrmFieldDataJob.oho:202-217 - Uodates CRM field data on activities4. CreateActivityFromUploadService.php:113-119 - Parses CRM records for uploaded recordingsMedium Prioritv5.UndateSalesforceAccount.nhn:28-44 - Undates Salestorce account on team chanaes.b. Activitycontroller.php:11//-1192 - syncs opportunity on activity viewPattern Used1. Creates a CrmownerResolver with the team and intended admin2. Calls prepareCrmService() which tries the admin first, then falls back to team members with active tokens (ordered6 tiles with chanaes vView alllapp/Listeners/Teams/# UpdateSalesforceAccount.pho +16-5app/Jobs/Activity/Import/@ MatchCrmData.php +9-4app/Component/Uploader/Services/ D CreateActivityFromUploadService.php +7 -2annllohe/Activitvllmnort/MlindatoCrmGioldData.loh.nhnt8.app/Jobs/Activity/Import/ HydrateCrmDataByExternalCallidJob.php +8 -3aoo/Htto/Controllers/AP|/M ActivitvController.ohv +8* Reiect allAccent alliAsk anvthina (&4-L)<> Code Claude Qnus 1.7 MediumW Windsurf Teamc1-1.UTE.8io 4 spaces...
|
71177
|
NULL
|
NULL
|
NULL
|
|
71177
|
NULL
|
0
|
2026-05-22T11:28:45.698350+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449325698_m2.jpg...
|
PhpStorm
|
faVsco.js – ActivityController.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449325698_m2.jpg...
|
Project: faVsco.js, menu
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8043719072324535154
|
-8628527368849355612
|
app_switch
|
hybrid
|
NULL
|
Project: faVsco.js, menu
PhostormFV faVsco.jsProie Project: faVsco.js, menu
PhostormFV faVsco.jsProiect v© UploadController.pnp© ActionitemsController.php© ActivityController.phpcAicrmnotescontroller.onpbasecontroller.onpc) Clientl okencontroller.ono© CrmController.phpC) DealLevelPromptscontroller.php© DealRiskcontroller.php©)Instantmeetingcontroller.phoC) LanquageController.phoC)LavoutManagementcontroller.ohoP LiveFeedController.ohnC)Meetinascontroller.onoC) MessageController.ohoC) MetadataController.oho© MobileSettingsController.phpC)MomentController.oho9) NudaeController nhnYc) NumberAllocatorControlier nhnlOrganizationLicensesController.php© OrganizationMembersController.php© OrganizationRetentionPolicyController© OrganizationRolesController.php© OrganizationSyncController.phpDartnerController.onp© PhoneNumberController.php€ PlaybackController.php© PlaylistController.php0) ScimController.php© SidekickController.php€ SoftphoneController.phpc) ssocontroller.phpc) subscriptionController.phpc)TeamalAutomationcontroller.onoC)TeamAiContextController.onog TeamController.ohpC) TeaminsiahtsController.ohoC) TranscriotionController.ohoC) TranslationController.onoC) UserController. ohni@ VocabularvController.ohn>M AuthMGustomerAniM internal• D Kiosk• MTeamc@ ActivitvController.php© AutomatedReportsController.php(e) NachhoardControllor nhn(e)ImnersonationController.phosavercuvity.ong•PurgeLookupcache.pnposyncriannat.pnp© SyncToPlanhat.php©PlaybackController.phppnp api.phpC) CreateSmsSentEvent.php(C) PlanhatActivityListener.pho(C) AskAnythingPromptService.pho(C) AutomatedReportsRepository.php(C) AutomatedReportsCommand.phpphp api v2.phpC) RequestGenerateReportJob.pho(C) AutomatedReportResult.php©AutomatedReport.ohpk?phpnamesnace liminnv Httn ControllensApTIuse cardon carbonuse ChaseConey \LaravelDatadogHelper\Datadog;use cxception,use euLuninace Auchaccess auchorizaclonexceptzon.use 1uluminare varabase cloouent bullder.use Iuluminace nuup usonkesponseuse 1LLuminate Hctp requestuse 1lluminate support collectionuse 1lluminate support racades Loouse 1LLuminate validation kuleuse 1LLuminate validation kules 1n^useLuminate vauicatzon valoationexcention:use Jiminny Comoonent ActivitvAnalvtics:use Jiminny Component \ActivitySearch\F1lterDefinitionColLection;luse _Jiminnv|Contracts\ES\Events|UodateSingleFntitv•use Jiminnv Contracts ES UndateTaraetEnum:use Jiminnv Contracts Nudae NudaeSactorvIntenface:use Jiminnv Contracts Plavlist PlavlistTrackFactorvInterface:use Jiminny\Contracts\Repositories \PlaylistActivityRepository:use Jiminnv Contracts Services Crm. ServiceIntenface:use Jiminny\Enums \TeamSetting:use Jiminny\Events \Activities\AiAutomation\ActivityProspectAdded;use Jiminny Events \Activities\Coaching\Coached:use Jiminny Contracts\Services\Crm\Supports0bjectTypeParseInterface:use Jiminny cxcepcions Loq1ctxcepc1on*use Jiminny Exceptions SocialAccountTokenTnvalidFycention•use Jiminny Http\Controllers\API\BaseController as Controller:use Jiminny Http\Controllers\CommentContextInterface:use Jiminny Http kesponses Ap1 Abstracckesponse*use Jiminny Htto responses Aot kesponseruse Jimnny Htto sertauzzers sonserzauzer:use Jiminny Htto Transformers ActivitycommentTransformer:use Jiminny HttpWraasforiêrs. Ac vAccept File 3- a% Reject EileoRmer. * 6 of 6 files →use Jiminny\Http\Transformers\ActivityTransformer13 (= laravel.log4 SF jiminny@localhost]4 HS_local [jiminny@localhost]& console [PROD](C) MatchCrmData.onp© UpdateCrmFieldDataJob.php# console SlAGiNGuse ILLuminate Contracts Queue Shoulduueue:final readonly class UodateSalesforce ccount imolements Shou doueueoublic functionorivate ProviderRegistry ScrmRegistry..private LoggerInterface $logger,D1..}public function handle(TeamCreated|TeamUpdated Sevent): void$teamCreator = $event->teamCreator;if (Sevent->team->account_id === null || $teamCreator === null) {ScrmService = Sthis->crmRegistry->oetSteamCreaton->aetteamO->aetCrmConfzouration@->oetProviderNamesteam = steamureator->oereamorSintearationAdmin = SteCreator->isCrmRequiredO 2 SteamCreator : Steam->qetOwnerO:if (SteamCreator->isCrmRequired)scrmservice-›secusersceancreacorr} else {scrmservice->setuserreamcreator->oetleamo->qetuwnero.tryfScrmResolver = app( abstract: Crm0wnerResolver::class.'providerSlug' => Steam->getCrmConfiguration->qetProviderNameO} catch (Exception $e) {sthas->loqger->infol'Attemot to resolve CRi service for "sevent->team->cetluldo tarled.".'excention' => se->cetcode0.itny sSevent->team->account->aptCrmPnovidenTd0'Jiminny_Client_ID__c' => Sevent->team->getUuidO=> Sevent->team->getTier->getTitleO,100% 2• Fri 22 May 14:28:45AskJiminnyReportActivityServiceTest vCascadeInvestigate Foreign KeSalestorce Token Fallb+0 ..• UpdateCrmFieldDataJob.php• CreateActivityFromUploadService.php• CreateActivityFromUploadService.php+6 -2Now the medium orioritv itemsPoad UndateSalesforceAccount.png• UpdateSalesforceAccount.php• UpdateSalesforceAccount.php+16 -6Now the ActivityController opportunity sync:Exolored ActivitvController.oho and searched 2 aueries^ ActivitvController.nhnActivitvController.ohvl+7-76/6 tacke doneAll 6 nlaces have been undated to use Crmlwne rRecolver with fallback to other team members' tokens when theSummary of ChangesHigh Priority - Same root cause as Twilio1. MatchCrmData.php: 179-194 - Critical job for matching CRM data on dialer recordings2. HydrateCrmDataBvExternalCallIdJob.oho:60-76 - Hvdrates CRM data bv external call ID (Amazon Connect)3. UpdateCrmFieldDataJob.php:202-217 - Updates CRM field data on activities4. CreateActivitvFromUoloadService.oho:113-119 - Parses CRM records for uoloaded recordinasMedium Priority5. UpdateSalesforceAccount.php: 28-44 - Updates Salesforce account on team changes6. ActivitvController.oho: 1177-1192 - Svncs opportunity on activity view.Pattern UsedCosh loastinn nau1. Creates a CrmOwnerResolver with the team and intended admin2. Calls prepareCrmServiceo which tries the admin first. then falls back to team members with active tokens orderecView allapp/Listeners/Teams/# UpdateSalesforceAccount.pho +16-5app/Jobs/Activity/Import/@ MatchCrmData.php +9 -4app/Component/Uploader/Services/ D CreateActivityFromUploadService.php +7 -2ann/lohe/Activitvllmnort/ MLindatoCrmGioldData.lob.nhntg.ann/lobs/Activitv/Imnort/ M HvdrateCrmDataRvSyternalCallid.lob.ohnt8gapo/Htto/Controllers/AP//[M ActivitvController.ohv +8* Reiect alliiAccent alliAsk anvthina (&4-L)<> Code Claude Qnus 4.7 MediumW Windsurf Team1-1.UTE.8Po 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71176
|
NULL
|
0
|
2026-05-22T11:28:43.223876+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449323223_m2.jpg...
|
Firefox
|
[SRD-6848] Sidekick SMS issue - Jira — Work
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6848...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449323223_m2.jpg...
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
[JY-20912] Fallback mechanism for users with active SF tokens for CRM Matching - Jira
[JY-20912] Fallback mechanism for users with active SF tokens for CRM Matching - Jira
[SRD-6848] Sidekick SMS issue - Jira
[SRD-6848] Sidekick SMS issue - Jira
Close tab
JY-20676 delete AJ reports related objects by LakyLak · Pull Request #12098 · jiminny/app
JY-20676 delete AJ reports related objects by LakyLak · Pull Request #12098 · jiminny/app
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Jiminny
Jiminny
[JY-20879] Enable users to use their new activity types - Jira
[JY-20879] Enable users to use their new activity types - Jira
Sentry error
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
[JY-20813] Twilio number is not released when Voice role is removed from user - Jira
[JY-20813] Twilio number is not released when Voice role is removed from user - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Summary
Summary
More actions for summary
More actions for summary
Queues
Queues
Create
Create
More for queues
More for queues
Team Priority
Team Priority
All open tickets
All open tickets
Star All open tickets
11
Unassigned tickets
Unassigned tickets
Star Unassigned tickets
1
Support team Queue
Support team Queue
Star Support team Queue
6
Raised by me
Raised by me
Star Raised by me
0
Assigned to me
Assigned to me
Star Assigned to me
1
Service requests
Service requests
Star Service requests
6
Platform team
Platform team
Star Platform team
1
Processing team
Processing team
Star Processing team
5
Site reliability team
Site reliability team
Star Site reliability team
0
New features requests
New features requests
Star New features requests
0
InfoSec issues
InfoSec issues
Star InfoSec issues
0
Ready for Customer
Ready for Customer
Star Ready for Customer
2
Resolved tickets
Resolved tickets
Star Resolved tickets
999+
View all queues
View all queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Back
Back
Bug - Change work type
SRD-6848
SRD-6848
Copy link
Sidekick SMS issue- edit summary, edit
Sidekick SMS issue
Sidekick SMS issue
Link work item
Link work item
Link web pages and more
Link web pages and more
Add form
Add form
Add design
Add design
Create
Create
Add app
Stoyan Tomov
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal
Description
Description
• Unsaved changes
Edit Description, edit
Hey team,
Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent to one of his prospects.
I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn’t find any trace of his attempted reply to that prospect ([PHONE]).
To send the text message, he replied to the email he got when the prospect texted him first:
Open image-20260513-072619.png
And this is the email he got after replying to the email:
Open image-20260513-072433.png
Reportedly, the text message he tried sending was only two words long.
Mario and I performed a couple of tests, and despite receiving each reply via email, we both got the same emails as Scott, stating that the messages were not sent. Below are the failure messages and the result of our testing:
Open image-20260513-072900.png
Open image-20260513-072913.png
Open image-20260513-072944.png
I couldn’t help but notice that, unlike with Mario’s reply, my reply via email included my email signature by default, and this can significantly increase the size of the text message, but this shouldn’t be an issue if the SMS gets segmented when a certain threshold is reached, making it a so-called long SMS.
Can someone please check why we are always receiving these failure emails, even though the messages were sent, and of course, why Scott’s text message was not sent at all?
Data Centre
More information about
Edit Data Centre
US
Steps to reproduce
Steps to reproduce
More information about
Edit Steps to reproduce, edit
Start an SMS conversation with another Jiminny user and reply to each other via email.
Customer type
More information about
Edit Customer type
Enterprise
Actual outcome
More information about
Edit Actual outcome
With or without success the sender always receives a failure email
Expected outcome
More information about
Edit Expected outcome
The text messages to be sent via email without failures
Severity level
More information about
Edit Severity level
S2
Impact
Impact
More information about
Edit Impact, edit
None
Root cause
Root cause
More information about
Edit Root cause, edit
None
Attachments
Attachments
5
More actions for attachments
More actions for attachments
Open image-20260513-072913.png
image-20260513-072
913.png...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20912] Fallback mechanism for users with active SF tokens for CRM Matching - Jira","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20912] Fallback mechanism for users with active SF tokens for CRM Matching - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.15259309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6848] Sidekick SMS issue - Jira","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6848] Sidekick SMS issue - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.06632314,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.1245012,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20676 delete AJ reports related objects by LakyLak · Pull Request #12098 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20676 delete AJ reports related objects by LakyLak · Pull Request #12098 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.15791224,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.4644282,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20879] Enable users to use their new activity types - Jira","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20879] Enable users to use their new activity types - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.106715426,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sentry error","depth":4,"bounds":{"left":0.0028257978,"top":0.35155627,"width":0.024601065,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.37071028,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.38188347,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20813] Twilio number is not released when Voice role is removed from user - Jira","depth":4,"bounds":{"left":0.0,"top":0.40343177,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20813] Twilio number is not released when Voice role is removed from user - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41460496,"width":0.14793883,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.43774942,"width":0.07413564,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"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,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"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,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"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,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"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,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"bounds":{"left":0.095578454,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"bounds":{"left":0.10073138,"top":0.06344773,"width":0.044215426,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"bounds":{"left":0.40475398,"top":0.06264964,"width":0.24268617,"height":0.015961692},"on_screen":true,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"bounds":{"left":0.65575135,"top":0.057861134,"width":0.030086435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.66705453,"top":0.06384677,"width":0.014793883,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"bounds":{"left":0.91223407,"top":0.057861134,"width":0.035904255,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"bounds":{"left":0.92353725,"top":0.06384677,"width":0.020611702,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"bounds":{"left":0.9494681,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"bounds":{"left":0.954621,"top":0.06344773,"width":0.027759308,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"bounds":{"left":0.96143615,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"bounds":{"left":0.9665891,"top":0.06344773,"width":0.010139627,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"bounds":{"left":0.9734042,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.97855717,"top":0.06344773,"width":0.017952127,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.98537236,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"bounds":{"left":0.99052525,"top":0.06344773,"width":0.009474754,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recent","depth":12,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Starred","depth":12,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.032081116,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"bounds":{"left":0.08892952,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.15508644,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.16240026,"top":0.25618514,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"bounds":{"left":0.08759973,"top":0.27853152,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"bounds":{"left":0.09823803,"top":0.28451717,"width":0.03025266,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"bounds":{"left":0.14577793,"top":0.28172386,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Summary","depth":21,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary","depth":24,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.021276595,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for summary","depth":22,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for summary","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Queues","depth":24,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.017121011,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.13646941,"top":0.33280128,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"bounds":{"left":0.14577793,"top":0.33280128,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Team Priority","depth":23,"bounds":{"left":0.095578454,"top":0.35514766,"width":0.059507977,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Team Priority","depth":26,"bounds":{"left":0.10621676,"top":0.36113328,"width":0.029587766,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All open tickets","depth":25,"bounds":{"left":0.099567816,"top":0.38068634,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All open tickets","depth":28,"bounds":{"left":0.11020612,"top":0.386672,"width":0.034075797,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star All open tickets","depth":26,"bounds":{"left":0.14577793,"top":0.38387868,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11","depth":28,"bounds":{"left":0.14810506,"top":0.38826814,"width":0.0033244682,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Unassigned tickets","depth":25,"bounds":{"left":0.099567816,"top":0.40622506,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Unassigned tickets","depth":28,"bounds":{"left":0.11020612,"top":0.4122107,"width":0.03307846,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Unassigned tickets","depth":26,"bounds":{"left":0.14577793,"top":0.4094174,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":28,"bounds":{"left":0.14893617,"top":0.41380686,"width":0.0016622341,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Support team Queue","depth":25,"bounds":{"left":0.099567816,"top":0.43176377,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Support team Queue","depth":28,"bounds":{"left":0.11020612,"top":0.43774942,"width":0.03025266,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Support team Queue","depth":26,"bounds":{"left":0.14577793,"top":0.4349561,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6","depth":28,"bounds":{"left":0.14860372,"top":0.43934557,"width":0.0023271276,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Raised by me","depth":25,"bounds":{"left":0.099567816,"top":0.45730248,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Raised by me","depth":28,"bounds":{"left":0.11020612,"top":0.4632881,"width":0.029753989,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Raised by me","depth":26,"bounds":{"left":0.14577793,"top":0.46049482,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"bounds":{"left":0.1484375,"top":0.46488428,"width":0.0026595744,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Assigned to me","depth":25,"bounds":{"left":0.099567816,"top":0.4828412,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Assigned to me","depth":28,"bounds":{"left":0.11020612,"top":0.4888268,"width":0.03174867,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Assigned to me","depth":26,"bounds":{"left":0.14577793,"top":0.48603353,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":28,"bounds":{"left":0.14893617,"top":0.490423,"width":0.0016622341,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service requests","depth":25,"bounds":{"left":0.099567816,"top":0.5083799,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service requests","depth":28,"bounds":{"left":0.11020612,"top":0.5143655,"width":0.033410903,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Service requests","depth":26,"bounds":{"left":0.14577793,"top":0.51157224,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6","depth":28,"bounds":{"left":0.14860372,"top":0.5159617,"width":0.0023271276,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform team","depth":25,"bounds":{"left":0.099567816,"top":0.5339186,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform team","depth":28,"bounds":{"left":0.11020612,"top":0.53990424,"width":0.031083776,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Platform team","depth":26,"bounds":{"left":0.14577793,"top":0.5371109,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":28,"bounds":{"left":0.14893617,"top":0.5415004,"width":0.0016622341,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing team","depth":25,"bounds":{"left":0.099567816,"top":0.5594573,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing team","depth":28,"bounds":{"left":0.11020612,"top":0.5654429,"width":0.03307846,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Processing team","depth":26,"bounds":{"left":0.14577793,"top":0.56264967,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5","depth":28,"bounds":{"left":0.14860372,"top":0.56703913,"width":0.0023271276,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Site reliability team","depth":25,"bounds":{"left":0.099567816,"top":0.584996,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Site reliability team","depth":28,"bounds":{"left":0.11020612,"top":0.59098166,"width":0.03274601,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Site reliability team","depth":26,"bounds":{"left":0.14577793,"top":0.58818835,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"bounds":{"left":0.1484375,"top":0.5925778,"width":0.0026595744,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"New features requests","depth":25,"bounds":{"left":0.099567816,"top":0.6105347,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New features requests","depth":28,"bounds":{"left":0.11020612,"top":0.61652035,"width":0.032579787,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star New features requests","depth":26,"bounds":{"left":0.14577793,"top":0.61372703,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"bounds":{"left":0.1484375,"top":0.6181165,"width":0.0026595744,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"InfoSec issues","depth":25,"bounds":{"left":0.099567816,"top":0.6360734,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"InfoSec issues","depth":28,"bounds":{"left":0.11020612,"top":0.6420591,"width":0.03324468,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star InfoSec issues","depth":26,"bounds":{"left":0.14577793,"top":0.6392658,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"bounds":{"left":0.1484375,"top":0.64365524,"width":0.0026595744,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ready for Customer","depth":25,"bounds":{"left":0.099567816,"top":0.66161215,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ready for Customer","depth":28,"bounds":{"left":0.11020612,"top":0.6675978,"width":0.032912236,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Ready for Customer","depth":26,"bounds":{"left":0.14577793,"top":0.66480446,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2","depth":28,"bounds":{"left":0.14860372,"top":0.6691939,"width":0.0023271276,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Resolved tickets","depth":25,"bounds":{"left":0.099567816,"top":0.68715084,"width":0.055518616,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Resolved tickets","depth":28,"bounds":{"left":0.11020612,"top":0.69313645,"width":0.027094414,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Resolved tickets","depth":26,"bounds":{"left":0.14112367,"top":0.6903432,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"999+","depth":28,"bounds":{"left":0.14245346,"top":0.69473267,"width":0.009973404,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View all queues","depth":24,"bounds":{"left":0.095578454,"top":0.7126895,"width":0.059507977,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View all queues","depth":27,"bounds":{"left":0.10621676,"top":0.7186752,"width":0.034906916,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"bounds":{"left":0.09158909,"top":0.73822826,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"bounds":{"left":0.1022274,"top":0.7442139,"width":0.03756649,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.74142057,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"bounds":{"left":0.15442154,"top":0.74142057,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"bounds":{"left":0.09158909,"top":0.76376694,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"bounds":{"left":0.1022274,"top":0.7697526,"width":0.021276595,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"bounds":{"left":0.15309176,"top":0.7669593,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"bounds":{"left":0.15442154,"top":0.7669593,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"bounds":{"left":0.09158909,"top":0.7893057,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"bounds":{"left":0.1022274,"top":0.7952913,"width":0.017287234,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"bounds":{"left":0.15309176,"top":0.792498,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for reports","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Operations","depth":19,"bounds":{"left":0.09158909,"top":0.81484437,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Operations","depth":22,"bounds":{"left":0.1022274,"top":0.82083,"width":0.02443484,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for operations","depth":20,"bounds":{"left":0.15309176,"top":0.81803674,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for operations","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Knowledge Base","depth":19,"bounds":{"left":0.09158909,"top":0.84038305,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Knowledge Base","depth":22,"bounds":{"left":0.1022274,"top":0.84636873,"width":0.03723404,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for knowledge base","depth":20,"bounds":{"left":0.15309176,"top":0.8435754,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for knowledge base","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Customers","depth":19,"bounds":{"left":0.09158909,"top":0.8659218,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customers","depth":22,"bounds":{"left":0.1022274,"top":0.8719074,"width":0.024268618,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customers","depth":20,"bounds":{"left":0.15309176,"top":0.8691141,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customers","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Channels","depth":19,"bounds":{"left":0.09158909,"top":0.8914605,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channels","depth":22,"bounds":{"left":0.1022274,"top":0.89744616,"width":0.020944148,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email logs","depth":19,"bounds":{"left":0.09158909,"top":0.9169992,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Email logs","depth":22,"bounds":{"left":0.1022274,"top":0.92298484,"width":0.022606382,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customer notification logs","depth":20,"bounds":{"left":0.15309176,"top":0.9201915,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customer notification logs","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer escalations","depth":19,"bounds":{"left":0.09158909,"top":0.9425379,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer escalations","depth":22,"bounds":{"left":0.1022274,"top":0.9485235,"width":0.04920213,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.15309176,"top":0.94573027,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":19,"bounds":{"left":0.09158909,"top":0.9680766,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":22,"bounds":{"left":0.1022274,"top":0.97406226,"width":0.03723404,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Slack integration","depth":20,"bounds":{"left":0.15309176,"top":0.97126895,"width":0.0039893617,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Slack integration","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":19,"bounds":{"left":0.09158909,"top":0.9936153,"width":0.06349734,"height":0.0063846707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":22,"bounds":{"left":0.1022274,"top":0.99960095,"width":0.037898935,"height":0.0003990531},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Reporting Center","depth":20,"bounds":{"left":0.15309176,"top":0.99680763,"width":0.0039893617,"height":0.0031923652},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Reporting Center","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add shortcut","depth":19,"bounds":{"left":0.09158909,"top":1.0,"width":0.06349734,"height":-0.019154072},"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shortcut","depth":22,"bounds":{"left":0.1022274,"top":1.0,"width":0.028922873,"height":-0.02513969},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.15309176,"top":1.0,"width":0.0039893617,"height":-0.022346377},"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":19,"bounds":{"left":0.09158909,"top":1.0,"width":0.06349734,"height":-0.044692755},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":22,"bounds":{"left":0.1022274,"top":1.0,"width":0.045545213,"height":-0.050678372},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for archived work items","depth":20,"bounds":{"left":0.15309176,"top":1.0,"width":0.0039893617,"height":-0.04788506},"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for archived work items","depth":22,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More spaces","depth":17,"bounds":{"left":0.08759973,"top":1.0,"width":0.0674867,"height":-0.07023144},"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"bounds":{"left":0.09823803,"top":1.0,"width":0.028756648,"height":-0.076217055},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"bounds":{"left":0.08361037,"top":1.0,"width":0.071476065,"height":-0.09577012},"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"bounds":{"left":0.15309176,"top":1.0,"width":0.0039893617,"height":-0.098962545},"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"bounds":{"left":0.2109375,"top":0.0981644,"width":0.062333778,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Back","depth":13,"bounds":{"left":0.26462767,"top":0.10933759,"width":0.024767287,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back","depth":15,"bounds":{"left":0.27460107,"top":0.11173184,"width":0.010804521,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":15,"bounds":{"left":0.2933843,"top":0.10933759,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"SRD-6848","depth":15,"bounds":{"left":0.30136302,"top":0.10933759,"width":0.019780586,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6848","depth":17,"bounds":{"left":0.30136302,"top":0.11292897,"width":0.019780586,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"bounds":{"left":0.31981382,"top":0.11213089,"width":0.005319149,"height":0.012769354},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Sidekick SMS issue- edit summary, edit","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Sidekick SMS issue","depth":12,"bounds":{"left":0.26861703,"top":0.1396648,"width":0.3778258,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":13,"bounds":{"left":0.26861703,"top":0.13926576,"width":0.072972074,"height":0.023543496},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link work item","depth":12,"bounds":{"left":0.26861703,"top":0.17158818,"width":0.047539894,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Link work item","depth":14,"bounds":{"left":0.27992022,"top":0.17757383,"width":0.032247342,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Link web pages and more","depth":12,"bounds":{"left":0.31582448,"top":0.17158818,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Link web pages and more","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add form","depth":13,"bounds":{"left":0.32912233,"top":0.17158818,"width":0.03673537,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add form","depth":15,"bounds":{"left":0.3410904,"top":0.17757383,"width":0.020777926,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add design","depth":12,"bounds":{"left":0.36851728,"top":0.17158818,"width":0.038397606,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add design","depth":14,"bounds":{"left":0.3778258,"top":0.17757383,"width":0.025099734,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":13,"bounds":{"left":0.40957448,"top":0.17158818,"width":0.028922873,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":15,"bounds":{"left":0.41356382,"top":0.17757383,"width":0.014960106,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add app","depth":12,"bounds":{"left":0.44115692,"top":0.17158818,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stoyan Tomov","depth":12,"bounds":{"left":0.2862367,"top":0.22944932,"width":0.031914894,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"raised this request","depth":12,"bounds":{"left":0.31948137,"top":0.22944932,"width":0.04055851,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via","depth":12,"bounds":{"left":0.36136967,"top":0.22944932,"width":0.006482713,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jira","depth":12,"bounds":{"left":0.36918217,"top":0.22944932,"width":0.00831117,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hide details","depth":11,"bounds":{"left":0.6080452,"top":0.22346368,"width":0.034075797,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide details","depth":13,"bounds":{"left":0.61203456,"top":0.22944932,"width":0.026097074,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View request in portal","depth":11,"bounds":{"left":0.2862367,"top":0.2490024,"width":0.04105718,"height":0.012769354},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View request in portal","depth":12,"bounds":{"left":0.2862367,"top":0.24940144,"width":0.04105718,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Description","depth":11,"bounds":{"left":0.27426863,"top":0.27773345,"width":0.02543218,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":12,"bounds":{"left":0.27426863,"top":0.27813247,"width":0.02543218,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"• Unsaved changes","depth":12,"bounds":{"left":0.30501994,"top":0.2793296,"width":0.03756649,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Description, edit","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey team,","depth":13,"bounds":{"left":0.27426863,"top":0.30007982,"width":0.022273935,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent to one of his prospects.","depth":13,"bounds":{"left":0.27426863,"top":0.32881084,"width":0.3570479,"height":0.03312051},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn’t find any trace of his attempted reply to that prospect (+64275138300).","depth":13,"bounds":{"left":0.27426863,"top":0.37669593,"width":0.35821143,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To send the text message, he replied to the email he got when the prospect texted him first:","depth":13,"bounds":{"left":0.27426863,"top":0.40542698,"width":0.20113032,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open image-20260513-072619.png","depth":13,"bounds":{"left":0.27426863,"top":0.44373503,"width":0.07712766,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"And this is the email he got after replying to the email:","depth":13,"bounds":{"left":0.27426863,"top":0.830407,"width":0.11801862,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open image-20260513-072433.png","depth":13,"bounds":{"left":0.27426863,"top":0.8687151,"width":0.078125,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reportedly, the text message he tried sending was only two words long.","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mario and I performed a couple of tests, and despite receiving each reply via email, we both got the same emails as Scott, stating that the messages were not sent. Below are the failure messages and the result of our testing:","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open image-20260513-072900.png","depth":13,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open image-20260513-072913.png","depth":13,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open image-20260513-072944.png","depth":13,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"I couldn’t help but notice that, unlike with Mario’s reply, my reply via email included my email signature by default, and this can significantly increase the size of the text message, but this shouldn’t be an issue if the SMS gets segmented when a certain threshold is reached, making it a so-called long SMS.","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Can someone please check why we are always receiving these failure emails, even though the messages were sent, and of course, why Scott’s text message was not sent at all?","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Data Centre","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Data Centre","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"US","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Steps to reproduce","depth":11,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steps to reproduce","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Steps to reproduce, edit","depth":11,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start an SMS conversation with another Jiminny user and reply to each other via email.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer type","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Customer type","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actual outcome","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Actual outcome","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"With or without success the sender always receives a failure email","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expected outcome","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Expected outcome","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"The text messages to be sent via email without failures","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Severity level","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Severity level","depth":12,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"S2","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Impact","depth":11,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Impact","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Impact, edit","depth":11,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"None","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Root cause","depth":11,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Root cause","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Root cause, edit","depth":11,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"None","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Attachments","depth":11,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Attachments","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for attachments","depth":11,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for attachments","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open image-20260513-072913.png","depth":15,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"image-20260513-072","depth":19,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"913.png","depth":19,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3514735416476223434
|
-4354007027943582556
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
[JY-20912] Fallback mechanism for users with active SF tokens for CRM Matching - Jira
[JY-20912] Fallback mechanism for users with active SF tokens for CRM Matching - Jira
[SRD-6848] Sidekick SMS issue - Jira
[SRD-6848] Sidekick SMS issue - Jira
Close tab
JY-20676 delete AJ reports related objects by LakyLak · Pull Request #12098 · jiminny/app
JY-20676 delete AJ reports related objects by LakyLak · Pull Request #12098 · jiminny/app
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Jiminny
Jiminny
[JY-20879] Enable users to use their new activity types - Jira
[JY-20879] Enable users to use their new activity types - Jira
Sentry error
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
[JY-20813] Twilio number is not released when Voice role is removed from user - Jira
[JY-20813] Twilio number is not released when Voice role is removed from user - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Summary
Summary
More actions for summary
More actions for summary
Queues
Queues
Create
Create
More for queues
More for queues
Team Priority
Team Priority
All open tickets
All open tickets
Star All open tickets
11
Unassigned tickets
Unassigned tickets
Star Unassigned tickets
1
Support team Queue
Support team Queue
Star Support team Queue
6
Raised by me
Raised by me
Star Raised by me
0
Assigned to me
Assigned to me
Star Assigned to me
1
Service requests
Service requests
Star Service requests
6
Platform team
Platform team
Star Platform team
1
Processing team
Processing team
Star Processing team
5
Site reliability team
Site reliability team
Star Site reliability team
0
New features requests
New features requests
Star New features requests
0
InfoSec issues
InfoSec issues
Star InfoSec issues
0
Ready for Customer
Ready for Customer
Star Ready for Customer
2
Resolved tickets
Resolved tickets
Star Resolved tickets
999+
View all queues
View all queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Back
Back
Bug - Change work type
SRD-6848
SRD-6848
Copy link
Sidekick SMS issue- edit summary, edit
Sidekick SMS issue
Sidekick SMS issue
Link work item
Link work item
Link web pages and more
Link web pages and more
Add form
Add form
Add design
Add design
Create
Create
Add app
Stoyan Tomov
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal
Description
Description
• Unsaved changes
Edit Description, edit
Hey team,
Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent to one of his prospects.
I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn’t find any trace of his attempted reply to that prospect ([PHONE]).
To send the text message, he replied to the email he got when the prospect texted him first:
Open image-20260513-072619.png
And this is the email he got after replying to the email:
Open image-20260513-072433.png
Reportedly, the text message he tried sending was only two words long.
Mario and I performed a couple of tests, and despite receiving each reply via email, we both got the same emails as Scott, stating that the messages were not sent. Below are the failure messages and the result of our testing:
Open image-20260513-072900.png
Open image-20260513-072913.png
Open image-20260513-072944.png
I couldn’t help but notice that, unlike with Mario’s reply, my reply via email included my email signature by default, and this can significantly increase the size of the text message, but this shouldn’t be an issue if the SMS gets segmented when a certain threshold is reached, making it a so-called long SMS.
Can someone please check why we are always receiving these failure emails, even though the messages were sent, and of course, why Scott’s text message was not sent at all?
Data Centre
More information about
Edit Data Centre
US
Steps to reproduce
Steps to reproduce
More information about
Edit Steps to reproduce, edit
Start an SMS conversation with another Jiminny user and reply to each other via email.
Customer type
More information about
Edit Customer type
Enterprise
Actual outcome
More information about
Edit Actual outcome
With or without success the sender always receives a failure email
Expected outcome
More information about
Edit Expected outcome
The text messages to be sent via email without failures
Severity level
More information about
Edit Severity level
S2
Impact
Impact
More information about
Edit Impact, edit
None
Root cause
Root cause
More information about
Edit Root cause, edit
None
Attachments
Attachments
5
More actions for attachments
More actions for attachments
Open image-20260513-072913.png
image-20260513-072
913.png...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71174
|
NULL
|
0
|
2026-05-22T11:28:41.074514+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449321074_m1.jpg...
|
Firefox
|
[SRD-6848] Sidekick SMS issue - Jira — Work
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6848...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449321074_m1.jpg...
|
SlackFileEditViewGoHistoryWindowHelpAPP (83•••EDDO SlackFileEditViewGoHistoryWindowHelpAPP (83•••EDDOCKER0 81DEV (-zsh)О 882APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%HomeDMsActivityFilesLaterMore+→Jiminny ...CHSIICCTIS# general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0lahl100% <478•Fri 22 May 14:28:40Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan TomovFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory used...
|
NULL
|
-5856056127473617795
|
NULL
|
click
|
ocr
|
NULL
|
SlackFileEditViewGoHistoryWindowHelpAPP (83•••EDDO SlackFileEditViewGoHistoryWindowHelpAPP (83•••EDDOCKER0 81DEV (-zsh)О 882APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%HomeDMsActivityFilesLaterMore+→Jiminny ...CHSIICCTIS# general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0lahl100% <478•Fri 22 May 14:28:40Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкаMessage Stoyan TomovFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory used...
|
71173
|
NULL
|
NULL
|
NULL
|
|
71175
|
NULL
|
0
|
2026-05-22T11:28:40.957089+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449320957_m2.jpg...
|
Firefox
|
[SRD-6848] Sidekick SMS issue - Jira — Work
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6848...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449320957_m2.jpg...
|
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-20912 ••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabProtlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.26.40Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
-7549348620975430494
|
NULL
|
click
|
ocr
|
NULL
|
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-20912 ••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabProtlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.26.40Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Iil call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71172
|
NULL
|
NULL
|
NULL
|
|
71173
|
NULL
|
0
|
2026-05-22T11:28:29.646709+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449309646_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449309646_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.10069445,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.27,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.27222222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.27555555,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.27555555,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.29666665,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.33888888,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.38222224,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.38444445,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.38777778,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.38777778,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.40888888,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.44555557,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.44555557,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4961335034327536384
|
-3802775210325572530
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0lahl100% <478•Fri 22 May 14:28:29Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore ~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкааз няма+AaFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71172
|
NULL
|
0
|
2026-05-22T11:28:28.561785+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449308561_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449308561_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:28:19 PM
2:28
само ако се прати sms вече не трябва да пристига email със грешка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
аз няма
аз няма
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:28:19 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:28","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със грешка","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"аз няма","depth":24,"on_screen":true,"value":"аз няма","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"аз няма","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-3230286366688884764
|
-1425084089808550818
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:28:19 PM
2:28
само ако се прати sms вече не трябва да пристига email със грешка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
аз няма
аз няма
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.20:20C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71171
|
NULL
|
0
|
2026-05-22T11:28:28.460196+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449308460_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449308460_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.10069445,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.27,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.27222222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.27555555,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.27555555,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.29666665,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.33888888,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.38222224,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.38444445,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.38777778,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.38777778,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.40888888,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.44555557,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.44555557,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.5655556,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5655556,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.5655556,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.5655556,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.5911111,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.5888889,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.6077778,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.63,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.63,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.6622222,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.6888889,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.6622222,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.69,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.69,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.69,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.69,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7311111,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.7355555,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.75333333,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.75333333,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6978078761215061422
|
-3586811636068481954
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0lahl100% <478•Fri 22 May 14:28:28Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore ~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешкааз нямаFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71169
|
NULL
|
NULL
|
NULL
|
|
71169
|
NULL
|
0
|
2026-05-22T11:28:24.956856+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449304956_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449304956_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:28:19 PM
2:28
само ако се прати sms вече не трябва да пристига email със грешка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
аз
аз
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.10069445,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.19333333,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.27,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.27222222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.27555555,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.27555555,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.29666665,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.25111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.33888888,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.38222224,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.38444445,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.38777778,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.38777778,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.40888888,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.36333334,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.44555557,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.44555557,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.5655556,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5655556,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.5655556,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.5655556,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.5911111,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.5888889,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.6077778,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.63,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.63,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.6622222,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.6888889,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.6622222,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.69,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.69,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.69,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.69,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7311111,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.7355555,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.75333333,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.75333333,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.6077778,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:28:19 PM","depth":26,"bounds":{"left":0.72430557,"top":0.81333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:28","depth":27,"bounds":{"left":0.72430557,"top":0.81333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със грешка","depth":26,"bounds":{"left":0.7465278,"top":0.81,"width":0.19444445,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.81,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":64,"bounds":{"left":0.7465278,"top":0.81,"width":0.19444445,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.77555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.77555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.77555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.77555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"аз","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"аз","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"аз","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.013194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
3041768254516433344
|
-1280968626854788002
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:28:19 PM
2:28
само ако се прати sms вече не трябва да пристига email със грешка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
аз
аз
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)О $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0lahl100% <478•Fri 22 May 14:28:24Describe what you are looking forStoyan Tomov6 0MessagesAdd canvasO FilesMore ~+Stoyan Tom.Monday, May 18th ~просто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jirait Summarizeсамо ако се прати sms вече не трябва дапристига email със грешка+AaFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71170
|
NULL
|
0
|
2026-05-22T11:28:24.856067+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449304856_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449304856_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:28:19 PM
2:28
само ако се прати sms вече не трябва да пристига email със грешка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
аз
аз
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:28:19 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:28","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със грешка","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"аз","depth":24,"on_screen":true,"value":"аз","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"аз","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
3041768254516433344
|
-1280968626854788002
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:28:19 PM
2:28
само ако се прати sms вече не трябва да пристига email със грешка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
аз
аз
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.26:24C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporterRequest TypeKnowledge base@ Lukas KovalikStoyan TomovReport a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71168
|
NULL
|
NULL
|
NULL
|
|
71168
|
NULL
|
0
|
2026-05-22T11:28:19.754345+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449299754_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449299754_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":24,"on_screen":true,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
1636624640859797754
|
-3586811636068481970
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 fJy-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% C/ &• Fri 22 May 14:28:19C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporterRequest TypeKnowledge base@ Lukas KovalikStoyan Tomovã Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71167
|
NULL
|
0
|
2026-05-22T11:28:19.653581+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449299653_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449299653_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със грешка
само ако се прати sms вече не трябва да пристига email със грешка
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16333333,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.19,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.2211111,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.22333333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.30333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.30555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.33,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.37222221,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.41555557,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.41777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.5988889,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.5988889,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6244444,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.62222224,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.64111114,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.69555557,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.7222222,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.69555557,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.72333336,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.72333336,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7644445,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.7688889,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.7866667,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.7866667,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига email със грешка","depth":24,"bounds":{"left":0.71666664,"top":0.85555553,"width":0.26527777,"height":0.06666667},"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига email със грешка","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със грешка","depth":26,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.725,"top":0.8666667,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":64,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-7049591155580602742
|
-3586811919804758946
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със грешка
само ако се прати sms вече не трябва да пристига email със грешка
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:28:19QDescribe what you are looking forStoyan Tomov6 0• MessagesAdd canvasLukas Kovailпрати тогаL@ FilesMorev+Monday, May 18th ~Stoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимTodayLukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueX Bug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jira3+ Summarizeсамо ако се прати sms вече не трябва да пристигаemail със греш..•Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71165
|
NULL
|
NULL
|
NULL
|
|
71166
|
NULL
|
0
|
2026-05-22T11:28:18.218493+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449298218_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449298218_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със грещ
само ако се прати sms вече не трябва да пристига email със грещ
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига email със грещ","depth":24,"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига email със грещ","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със грещ","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-6013985102530272358
|
-3586811919536321442
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със грещ
само ако се прати sms вече не трябва да пристига email със грещ
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.26-1/C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71164
|
NULL
|
NULL
|
NULL
|
|
71165
|
NULL
|
0
|
2026-05-22T11:28:16.916253+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449296916_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449296916_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със грещ
само ако се прати sms вече не трябва да пристига email със грещ
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16333333,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.19,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.2211111,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.22333333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.30333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.30555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.33,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.37222221,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.41555557,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.41777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.5988889,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.5988889,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6244444,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.62222224,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.64111114,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.69555557,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.7222222,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.69555557,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.72333336,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.72333336,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7644445,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.7688889,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.7866667,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.7866667,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига email със грещ","depth":24,"bounds":{"left":0.71666664,"top":0.85555553,"width":0.26527777,"height":0.06666667},"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига email със грещ","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със грещ","depth":26,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.725,"top":0.8666667,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":62,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-6013985102530272358
|
-3586811919536321442
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със грещ
само ако се прати sms вече не трябва да пристига email със грещ
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:28:16QDescribe what you are looking forStoyan Tomov6 0• MessagesAdd canvasLukas Kovailпрати тогаL@ FilesMorev+Monday, May 18th ~Stoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимTodayLukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueX Bug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jira3+ Summarizeсамо ако се прати sms вече не трябва да пристигаemail със гре..•Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71164
|
NULL
|
0
|
2026-05-22T11:28:15.835589+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449295835_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449295835_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със
само ако се прати sms вече не трябва да пристига email със
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига email със","depth":24,"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига email със","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-5983931786763051416
|
-3586811911214824354
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със
само ако се прати sms вече не трябва да пристига email със
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recenti# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email logs⅘> Developer escalationsafs Slack integrationQ Search< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:• email conied to climboardHello,‹ S0 l O Б100% C/ & • Fri 22 May 14:28:15C Ask Rovo ® Ê Q+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigure...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71163
|
NULL
|
0
|
2026-05-22T11:28:15.730625+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449295730_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449295730_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със
само ако се прати sms вече не трябва да пристига email със
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16333333,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.19,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.2211111,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.22333333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.30333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.30555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.33,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.37222221,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.41555557,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.41777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.5988889,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.5988889,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6244444,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.62222224,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.64111114,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.69555557,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.7222222,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.69555557,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.72333336,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.72333336,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7644445,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.7688889,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.7866667,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.7866667,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига email със","depth":24,"bounds":{"left":0.71666664,"top":0.85555553,"width":0.26527777,"height":0.06666667},"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига email със","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига email със","depth":26,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.725,"top":0.8666667,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":57,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-5983931786763051416
|
-3586811911214824354
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига email със
само ако се прати sms вече не трябва да пристига email със
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:28:15QDescribe what you are looking forStoyan Tomov6 0• MessagesAdd canvasLukas Kovailпрати тогаL@ FilesMorev+Monday, May 18th ~Stoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимTodayLukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueX Bug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jira3+ Summarizeсамо ако се прати sms вече не трябва да пристигаemail със|Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71161
|
NULL
|
NULL
|
NULL
|
|
71162
|
NULL
|
0
|
2026-05-22T11:28:13.319676+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449293319_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449293319_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига емаил
само ако се прати sms вече не трябва да пристига емаил
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига емаил","depth":24,"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига емаил","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига емаил","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
2368206662888633997
|
-3586811911214822306
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига емаил
само ако се прати sms вече не трябва да пристига емаил
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.26.12C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporterRequest TypeKnowledge base@ Lukas KovalikStoyan Tomovã Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71159
|
NULL
|
NULL
|
NULL
|
|
71161
|
NULL
|
0
|
2026-05-22T11:28:13.111910+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449293111_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449293111_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига емаил
само ако се прати sms вече не трябва да пристига емаил
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16333333,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.19,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.2211111,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.22333333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.22666667,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.24777777,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.20222223,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.30333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.30555555,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.30888888,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.33,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.28444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.37222221,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.41555557,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.41777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.4211111,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.4422222,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.39666668,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.4788889,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.47555557,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.44111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5366667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.53333336,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.49888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.57,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.56666666,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5988889,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.5988889,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.5988889,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6244444,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.62222224,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.64111114,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.66333336,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.69555557,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.7222222,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.69555557,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.72333336,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.72333336,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.72333336,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7644445,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.7688889,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.7866667,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.7866667,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.64111114,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5322222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига емаил","depth":24,"bounds":{"left":0.71666664,"top":0.85555553,"width":0.26527777,"height":0.06666667},"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига емаил","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига емаил","depth":26,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.725,"top":0.8666667,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":53,"bounds":{"left":0.725,"top":0.8666667,"width":0.24305555,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
2368206662888633997
|
-3586811911214822306
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига емаил
само ако се прати sms вече не трябва да пристига емаил
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)О $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:28:12QDescribe what you are looking forStoyan Tomov6 0• MessagesAdd canvasLukas Kovailпрати тогаL@ FilesMorev+Monday, May 18th ~Stoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимTodayLukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud -Sidekick SMS issueX Bug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in Jira3+ Summarizeсамо ако се прати sms вече не трябва да пристигаемаlAaFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71160
|
NULL
|
0
|
2026-05-22T11:28:12.232312+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449292232_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449292232_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига е
само ако се прати sms вече не трябва да пристига е
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.24555555,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.24777777,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.32777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.33,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.35444444,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.39666668,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.44,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.4422222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.46666667,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.5,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.55777776,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.62333333,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.62333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6488889,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.64666665,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.66555554,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.72,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.74666667,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.72,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.74777776,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.74777776,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7888889,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.79333335,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.8111111,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.8111111,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига е","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига е","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига е","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.24861111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-2914459269462933409
|
-3586811911080604578
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига е
само ако се прати sms вече не трябва да пристига е
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "*Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% C8•Fri 22 May 14:28:12Describe what you are looking forStoyan Tomov6 dMessagesAdd canvas•FilesMore ~+Lukas Kova.Monday, May 18thпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud*.Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in JiraSummarizeсамо ако се прати sms вече не трябва да пристигаFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71158
|
NULL
|
NULL
|
NULL
|
|
71159
|
NULL
|
0
|
2026-05-22T11:28:11.192507+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449291192_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449291192_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига
само ако се прати sms вече не трябва да пристига
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да пристига","depth":24,"on_screen":true,"value":"само ако се прати sms вече не трябва да пристига","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да пристига","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-2892871071700538100
|
-3586811911080604578
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да пристига
само ако се прати sms вече не трябва да пристига
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 fJy-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% C/ & • Fri 22 May 14:28:10C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporterRequest TypeKnowledge base@ Lukas KovalikStoyan TomovReport a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71158
|
NULL
|
0
|
2026-05-22T11:28:10.022606+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449290022_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449290022_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да присти
само ако се прати sms вече не трябва да присти
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.24555555,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.24777777,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.32777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.33,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.35444444,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.39666668,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.44,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.4422222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.46666667,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.5,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.55777776,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.62333333,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.62333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6488889,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.64666665,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.66555554,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.72,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.74666667,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.72,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.74777776,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.74777776,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7888889,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.79333335,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.8111111,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.8111111,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да присти","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"само ако се прати sms вече не трябва да присти","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да присти","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.23125,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-1176460933843919386
|
-3730927099156460450
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да присти
само ако се прати sms вече не трябва да присти
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% C8•Fri 22 May 14:28:09Describe what you are looking forStoyan Tomov6 dMessagesAdd canvas•FilesMore ~+Lukas Kova.Monday, May 18thпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud*.Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in JiraSummarizeсамо ако се прати sms вече не трябва да приdFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71156
|
NULL
|
0
|
2026-05-22T11:28:08.904186+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449288904_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449288904_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да п
само ако се прати sms вече не трябва да п
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.24555555,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.24777777,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.32777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.33,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.35444444,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.39666668,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.44,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.4422222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.46666667,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.5,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.55777776,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.62333333,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.62333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6488889,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.64666665,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.66555554,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.72,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.74666667,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.72,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.74777776,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.74777776,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7888889,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.79333335,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.8111111,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.8111111,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да п","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"само ако се прати sms вече не трябва да п","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да п","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.20277777,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
1344070318061541703
|
-3586811911080604578
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да п
само ако се прати sms вече не трябва да п
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% C8•Fri 22 May 14:28:08Describe what you are looking forStoyan Tomov6 dMessagesAdd canvas•FilesMore ~+Lukas Kova.Monday, May 18thпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud*.Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in JiraSummarizeсамо ако се прати sms вече не трябва да |Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71154
|
NULL
|
NULL
|
NULL
|
|
71157
|
NULL
|
0
|
2026-05-22T11:28:08.799879+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449288799_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449288799_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да п
само ако се прати sms вече не трябва да п
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms вече не трябва да п","depth":24,"on_screen":true,"value":"само ако се прати sms вече не трябва да п","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms вече не трябва да п","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
1344070318061541703
|
-3586811911080604578
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms вече не трябва да п
само ако се прати sms вече не трябва да п
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FizzMay 14.26:00C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71155
|
NULL
|
NULL
|
NULL
|
|
71154
|
NULL
|
0
|
2026-05-22T11:28:05.951657+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449285951_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449285951_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms ве
само ако се прати sms ве
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.24555555,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.24777777,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.32777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.33,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.35444444,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.39666668,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.44,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.4422222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.46666667,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.5,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.55777776,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.62333333,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.62333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6488889,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.64666665,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.66555554,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.72,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.74666667,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.72,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.74777776,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.74777776,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7888889,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.79333335,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.8111111,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.8111111,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms ве","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"само ако се прати sms ве","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms ве","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.12013889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-6679992759311132935
|
-3730927099156460450
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms ве
само ако се прати sms ве
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% C8•Fri 22 May 14:28:05Describe what you are looking forStoyan Tomov6 dMessagesAdd canvas•FilesMore ~+Lukas Kova.Monday, May 18thпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud*.Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in JiraSummarizeсамо ако се прати sms вel..•Fixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71155
|
NULL
|
0
|
2026-05-22T11:28:05.847806+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449285847_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449285847_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms ве
само ако се прати sms ве
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms ве","depth":24,"on_screen":true,"value":"само ако се прати sms ве","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms ве","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-6679992759311132935
|
-3730927099156460450
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms ве
само ако се прати sms ве
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14.26:09C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporterRequest TypeKnowledge base@ Lukas KovalikStoyan Tomovã Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71153
|
NULL
|
0
|
2026-05-22T11:28:01.172656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449281172_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449281172_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms
само ако се прати sms
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms","depth":24,"on_screen":true,"value":"само ако се прати sms","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-328325336881928166
|
-3586811911080604578
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms
само ако се прати sms
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 fJy-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ SearchCSOMOA100% C/3 & • Fri 22 May 14:28:00C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71151
|
NULL
|
NULL
|
NULL
|
|
71152
|
NULL
|
0
|
2026-05-22T11:28:00.869488+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449280869_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449280869_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms
само ако се прати sms
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.07083333,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22291666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.1388889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.17291667,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.13222222,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.18777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.19,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.19333333,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.21444444,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.24555555,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.24777777,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.25111112,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.27222222,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22666667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.32777777,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.33,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.33333334,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.35444444,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.30888888,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.39666668,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.44,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.4422222,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.44555557,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.46666667,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.4211111,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.50333333,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.5,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.5,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.5,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.46555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.5611111,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.55777776,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5233333,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.59444445,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.5911111,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":25,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.039583333,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.62333333,"width":0.004166667,"height":0.017777778}},{"char_start":1,"char_count":9,"bounds":{"left":0.75069445,"top":0.62333333,"width":0.035416666,"height":0.017777778}}],"role_description":"text"},{"role":"AXButton","text":"Jira Cloud","depth":25,"bounds":{"left":0.7888889,"top":0.62333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Remove preview","depth":27,"bounds":{"left":0.7326389,"top":0.6488889,"width":0.013888889,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize","depth":27,"bounds":{"left":0.7465278,"top":0.64666665,"width":0.2361111,"height":0.20555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick SMS issue","depth":28,"bounds":{"left":0.7888889,"top":0.66555554,"width":0.088194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Bug SRD-6848 in Jira Cloud","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.11180556,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Preview in Slack","depth":29,"bounds":{"left":0.7888889,"top":0.68777776,"width":0.06527778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Status","depth":28,"bounds":{"left":0.7888889,"top":0.72,"width":0.025,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"In Progress","depth":28,"bounds":{"left":0.7916667,"top":0.74666667,"width":0.050694443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Assignee","depth":28,"bounds":{"left":0.86180556,"top":0.72,"width":0.035416666,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":29,"bounds":{"left":0.8833333,"top":0.74777776,"width":0.05486111,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"(you)","depth":29,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.02013889,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.94027776,"top":0.74777776,"width":0.0027777778,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.94305557,"top":0.74777776,"width":0.017361112,"height":0.017777778}}],"role_description":"text"},{"role":"AXStaticText","text":"As of today at 2:27 PM","depth":29,"bounds":{"left":0.75555557,"top":0.7888889,"width":0.09166667,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Refresh","depth":29,"bounds":{"left":0.84930557,"top":0.79333335,"width":0.030555556,"height":0.008888889},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Jira","depth":29,"bounds":{"left":0.75555557,"top":0.8111111,"width":0.06458333,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"✨ Summarize","depth":29,"bounds":{"left":0.8229167,"top":0.8111111,"width":0.07361111,"height":0.031111112},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Open in browser","depth":29,"bounds":{"left":0.8819444,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share Bug SRD-6848","depth":28,"bounds":{"left":0.90416664,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View conversations","depth":28,"bounds":{"left":0.92638886,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More actions","depth":28,"bounds":{"left":0.94861114,"top":0.66555554,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.5566667,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати sms","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"само ако се прати sms","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати sms","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.10694444,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-328325336881928166
|
-3586811911080604578
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
Jira Cloud
Jira Cloud
Remove preview
Jira Cloud Bug SRD-6848 Sidekick SMS issue Bug SRD-6848 in Jira Cloud Preview in Slack Status In Progress Assignee Lukas Kovalik(you) As of today at 2:27 PM Refresh Open in Jira ✨ Summarize
Sidekick SMS issue
Bug SRD-6848 in Jira Cloud
Preview in Slack
Status
In Progress
Assignee
Lukas Kovalik
(you)
As of today at 2:27 PM
Refresh
Open in Jira
✨ Summarize
Open in browser
Share Bug SRD-6848
View conversations
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати sms
само ако се прати sms
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% C8•Fri 22 May 14:28:00Describe what you are looking forStoyan Tomov6 dMessagesAdd canvas•FilesMore ~+Lukas Kova.Monday, May 18thпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Jira Cloud*.Sidekick SMS issueBug SRD-6848 in Jira CloudStatusIn ProgressAssigneeLukas Kovalik (you)As of today at 2:27 PMOpen in JiraSummarizeсамо ако се прати smsFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71150
|
NULL
|
NULL
|
NULL
|
|
71151
|
NULL
|
0
|
2026-05-22T11:27:54.749968+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449274749_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449274749_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати смс
само ако се прати смс
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 15th at 12:34:04 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:34 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"явно никой не го ползва че чак сега разбрахме","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:50:41 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:50 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:01 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:24 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"чудя се само","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако се прати смс","depth":24,"on_screen":true,"value":"само ако се прати смс","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако се прати смс","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
2011993944209319294
|
-3874901274866038690
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако се прати смс
само ако се прати смс
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 ∞* FlzzMay 14-2/-04C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71150
|
NULL
|
0
|
2026-05-22T11:27:54.647442+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449274647_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449274647_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.80138886,"top":0.16111112,"width":0.09583333,"height":0.0011111111},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 15th at 12:34:04 PM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036111113,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:34 PM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036111113,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"явно никой не го ползва че чак сега разбрахме","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22430556,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:50:41 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:50 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:01 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.21875,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:24 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"чудя се само","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.018888889},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.19666667,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.19666667,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.19333333,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.23,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.23,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.22666667,"width":0.15,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.26333332,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.26333332,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.26,"width":0.22291666,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.26,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":65,"bounds":{"left":0.7465278,"top":0.26,"width":0.22291666,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.31555554,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.31777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.3211111,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.3211111,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.3422222,"width":0.1388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.37888888,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.37888888,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.17291667,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.4311111,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.43333334,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.43666667,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.43666667,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.45777777,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.4888889,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.4911111,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.49444443,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.49444443,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.5711111,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.5733333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.57666665,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.57666665,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.5977778,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.64,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.68333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.6855556,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.6888889,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.6888889,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.71,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.74666667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.74666667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.80444443,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.80444443,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"}]...
|
3128660008068940414
|
-3586670898714607522
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)О $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:27:54Describe what you are looking forStoyan TomovMessagesздрастиAdd canvasO FilesMore ~+Monday, May 18th ~идея си нями.-ами прати при нас, и ще видимпо принцип Al call scoring май беше processingно пак Ті е при насStoyan Tomov 10:54 AMеми и аз така си го тьлкувамреално проблема не е със саматафункционалност на Al Call Scoring-aLukas Kovalik 10:54 AMпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848само ако се пратиFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71149
|
NULL
|
0
|
2026-05-22T11:27:53.325748+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449273325_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449273325_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако с
само ако с
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.80138886,"top":0.16111112,"width":0.09583333,"height":0.0011111111},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 15th at 12:34:04 PM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036111113,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:34 PM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036111113,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"явно никой не го ползва че чак сега разбрахме","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22430556,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:50:41 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:50 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:01 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.21875,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:24 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"чудя се само","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.018888889},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.19666667,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.19666667,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.19333333,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.23,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.23,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.22666667,"width":0.15,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.26333332,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.26333332,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.26,"width":0.22291666,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.26,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":65,"bounds":{"left":0.7465278,"top":0.26,"width":0.22291666,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.31555554,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.31777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.3211111,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.3211111,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.3422222,"width":0.1388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.37888888,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.37888888,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.17291667,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.4311111,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.43333334,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.43666667,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.43666667,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.45777777,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.4888889,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.4911111,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.49444443,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.49444443,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.5711111,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.5733333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.57666665,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.57666665,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.5977778,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.64,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.68333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.6855556,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.6888889,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.6888889,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.71,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.74666667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.74666667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.80444443,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.80444443,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.8011111,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.8377778,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.8377778,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.83444446,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.83444446,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако с","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"само ако с","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако с","depth":26,"bounds":{"left":0.725,"top":0.89111114,"width":0.05,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"bounds":{"left":0.87569445,"top":0.9722222,"width":0.10138889,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"bounds":{"left":0.87569445,"top":0.97444445,"width":0.045138888,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"bounds":{"left":0.92083335,"top":0.97444445,"width":0.05625,"height":0.013333334},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
1107112544227584140
|
-3874901274866054052
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако с
само ако с
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)О $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:27:53Describe what you are looking forStoyan TomovMessagesздрастиAdd canvasO FilesMore ~+Monday, May 18th ~идея си нЯми.-ами прати при нас, и ще видимпо принцип Al call scoring май беше processingно пак Ті е при насStoyan Tomov 10:54 AMеми и аз така си го тьлкувамреално проблема не е със саматафункционалност на Al Call Scoring-aLukas Kovalik 10:54 AMпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848само акоFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory usedShift + Return to add a new line...
|
71147
|
NULL
|
NULL
|
NULL
|
|
71148
|
NULL
|
0
|
2026-05-22T11:27:53.236769+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449273236_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449273236_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако с
само ако с
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 15th at 12:34:04 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:34 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"явно никой не го ползва че чак сега разбрахме","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:50:41 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:50 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:01 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:24 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"чудя се само","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"само ако с","depth":24,"on_screen":true,"value":"само ако с","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"само ако с","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
1107112544227584140
|
-3874901274866054052
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
само ако с
само ако с
Shift + Return to add a new line
Shift + Return
to add a new line
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 (JY-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% L2 * FzzMay 14-2/-04C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
71146
|
NULL
|
NULL
|
NULL
|
|
71147
|
NULL
|
0
|
2026-05-22T11:27:51.817187+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449271817_m1.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449271817_m1.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.51180553,"top":0.08111111,"width":0.025,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50625,"top":0.14,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.5138889,"top":0.19222222,"width":0.020833334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50625,"top":0.21555555,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.5159722,"top":0.26777777,"width":0.016666668,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50625,"top":0.2911111,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.027083334,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51111114,"top":0.34333333,"width":0.0055555557,"height":0.015555556}},{"char_start":1,"char_count":7,"bounds":{"left":0.5159722,"top":0.34333333,"width":0.022222223,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50625,"top":0.36666667,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.015972223,"height":0.015555556},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.51666665,"top":0.4188889,"width":0.004166667,"height":0.015555556}},{"char_start":1,"char_count":4,"bounds":{"left":0.5208333,"top":0.4188889,"width":0.011805556,"height":0.015555556}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50625,"top":0.4422222,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.5152778,"top":0.49444443,"width":0.018055556,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50625,"top":0.5177778,"width":0.036111113,"height":0.075555556},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.5152778,"top":0.57,"width":0.01875,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.68472224,"top":0.12777779,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.57708335,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.09166667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.022222223,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.58819443,"top":0.12777779,"width":0.054166667,"height":0.007777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.58819443,"top":0.14666666,"width":0.034027778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"bounds":{"left":0.58819443,"top":0.17777778,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.58819443,"top":0.20888889,"width":0.048611112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.58819443,"top":0.24,"width":0.072916664,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.24,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":15,"bounds":{"left":0.59444445,"top":0.24,"width":0.06666667,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.58819443,"top":0.2711111,"width":0.08055556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.58819443,"top":0.30222222,"width":0.035416666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.58819443,"top":0.33333334,"width":0.036805555,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.05138889,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.36444443,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":11,"bounds":{"left":0.59305555,"top":0.36444443,"width":0.045833334,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.58819443,"top":0.39555556,"width":0.036111113,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.58819443,"top":0.42666668,"width":0.05138889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.094444446,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.45777777,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":20,"bounds":{"left":0.5923611,"top":0.45777777,"width":0.09861111,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.58819443,"top":0.5311111,"width":0.06458333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.58819443,"top":0.56222224,"width":0.07361111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.58819443,"top":0.5933333,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.58819443,"top":0.6244444,"width":0.07847222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.58819443,"top":0.65555555,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"bounds":{"left":0.58819443,"top":0.68666667,"width":0.06666667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.58819443,"top":0.7177778,"width":0.079166666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.055555556,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58819443,"top":0.7488889,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":12,"bounds":{"left":0.59444445,"top":0.7488889,"width":0.048611112,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.58819443,"top":0.78,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.58819443,"top":0.8111111,"width":0.061805554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.013194445,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.65555555,"top":0.8111111,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":2,"bounds":{"left":0.66041666,"top":0.8111111,"width":0.011805556,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.58819443,"top":0.8844444,"width":0.045833334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.58819443,"top":0.91555554,"width":0.024305556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.71319443,"top":0.12777779,"width":0.06458333,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.7326389,"top":0.14,"width":0.039583333,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.7798611,"top":0.12777779,"width":0.07152778,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"bounds":{"left":0.79930556,"top":0.14,"width":0.046527777,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.85347223,"top":0.12777779,"width":0.04375,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.87291664,"top":0.14,"width":0.01875,"height":0.017777778},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.87291664,"top":0.14,"width":0.0055555557,"height":0.017777778}},{"char_start":1,"char_count":4,"bounds":{"left":0.8784722,"top":0.14,"width":0.013194445,"height":0.017777778}}],"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.9,"top":0.12777779,"width":0.04236111,"height":0.04222222},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.94166666,"top":0.12777779,"width":0.022916667,"height":0.04222222},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.80138886,"top":0.16111112,"width":0.09583333,"height":0.0011111111},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 15th at 12:34:04 PM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036111113,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:34 PM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036111113,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"явно никой не го ползва че чак сега разбрахме","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.22430556,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.7972222,"top":0.17666666,"width":0.104166664,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.065972224,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:50:41 AM","depth":25,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:50 AM","depth":26,"bounds":{"left":0.8173611,"top":0.16111112,"width":0.0375,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:01 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.21875,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:24 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"чудя се само","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06111111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15416667,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.15625,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"bounds":{"left":0.71944445,"top":0.16111112,"width":0.021527778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.09861111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"bounds":{"left":0.81666666,"top":0.16111112,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.16111112,"width":0.03888889,"height":0.018888889},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"bounds":{"left":0.71944445,"top":0.19666667,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"bounds":{"left":0.71944445,"top":0.19666667,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"bounds":{"left":0.7465278,"top":0.19333333,"width":0.07083333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.16111112,"width":0.022222223,"height":0.033333335},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"bounds":{"left":0.71944445,"top":0.23,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.23,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"bounds":{"left":0.7465278,"top":0.22666667,"width":0.15,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.19222222,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"bounds":{"left":0.71944445,"top":0.26333332,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"bounds":{"left":0.71944445,"top":0.26333332,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"bounds":{"left":0.7465278,"top":0.26,"width":0.22291666,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.26,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":65,"bounds":{"left":0.7465278,"top":0.26,"width":0.22291666,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.22555555,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.31555554,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.31777778,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"bounds":{"left":0.8173611,"top":0.3211111,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.3211111,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"bounds":{"left":0.7465278,"top":0.3422222,"width":0.1388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.29666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"bounds":{"left":0.71944445,"top":0.37888888,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"bounds":{"left":0.71944445,"top":0.37888888,"width":0.021527778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.17291667,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":66,"bounds":{"left":0.7465278,"top":0.37555555,"width":0.17291667,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.34111112,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.4311111,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.43333334,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"bounds":{"left":0.81666666,"top":0.43666667,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.43666667,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"bounds":{"left":0.7465278,"top":0.45777777,"width":0.10069445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.41222224,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"bounds":{"left":0.7465278,"top":0.4888889,"width":0.065972224,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8125,"top":0.4911111,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"bounds":{"left":0.8173611,"top":0.49444443,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.8173611,"top":0.49444443,"width":0.0375,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.2326389,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":90,"bounds":{"left":0.7465278,"top":0.51555556,"width":0.23194444,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.47,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.5711111,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.5733333,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"bounds":{"left":0.81666666,"top":0.57666665,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"bounds":{"left":0.81666666,"top":0.57666665,"width":0.036805555,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"bounds":{"left":0.7465278,"top":0.5977778,"width":0.15555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.55222225,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.8229167,"top":0.64,"width":0.05277778,"height":0.031111112},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"bounds":{"left":0.7465278,"top":0.68333334,"width":0.06458333,"height":0.024444444},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8111111,"top":0.6855556,"width":0.0055555557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"bounds":{"left":0.81666666,"top":0.6888889,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"bounds":{"left":0.81666666,"top":0.6888889,"width":0.03125,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"bounds":{"left":0.7465278,"top":0.71,"width":0.03888889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.66444445,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"bounds":{"left":0.72430557,"top":0.74666667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.74666667,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.21597221,"height":0.044444446},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.00625,"height":0.02}},{"char_start":1,"char_count":50,"bounds":{"left":0.7465278,"top":0.74333334,"width":0.21527778,"height":0.044444446}}],"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.7088889,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"bounds":{"left":0.72430557,"top":0.80444443,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.80444443,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"bounds":{"left":0.7465278,"top":0.8011111,"width":0.11388889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.76666665,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"bounds":{"left":0.72430557,"top":0.8377778,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"bounds":{"left":0.72430557,"top":0.8377778,"width":0.016666668,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"bounds":{"left":0.7465278,"top":0.83444446,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"bounds":{"left":0.7465278,"top":0.83444446,"width":0.21597221,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.8048611,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.82708335,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.84930557,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.8715278,"top":0.8,"width":0.022222223,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":24,"bounds":{"left":0.71666664,"top":0.88,"width":0.26527777,"height":0.04222222},"on_screen":true,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-3577930065355285455
|
-3586670898714326948
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFileEditViewGoHistoryWindowHelpDOCKER0 81DEV (-zsh)O $82APP (-zsh)tests/Unit/Services/Activity/RingCentral/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/ServiceTest.phptests/Unit/Services/Activity/TwilioVideo/TwilioVideoMetadataHandlerTest.phptests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.phptests/Unit/Services/Mail/0ffice/EmailApiClientTest.phptests/Unit/Services/Mail/TextRelayServiceTest.phptests/Unit/Services/RecallAI/RecallAIServiceTest.php79 files changed, 4254 insertions(+), 2020 deletions(-)create mode 100644 .github/claude-reviewer/no-ticket-warning.txtcreate mode 100644.github/claude-reviewer/scripts/fetch-jira-context.mjsdelete mode 100644 app/Component/ES/Processor/BatchStatusInterface.phpcreatemode 100644 app/Component/ES/Processor/RedisEntityExtractor.phpdelete mode100644 app/Component/ES/Processor/Traits/WorkerIdTrait.phpcreate mode 100644 app/Component/ES/QueuePriorityEnum.phpcreate mode 100644 front-end/src/components/DealInsights/Modals/__tests__/AskAnythingModacreate mode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Asdeletemode100644 front-end/src/components/shared/AskAnything/__tests__/__snapshots__/Ascreatemode 100644tests/Unit/Component/ES/Processor/RedisEntityExtractorTest.phpdelete mode 100644 tests/Unit/Component/ES/Processor/Traits/WorkerIdTraitTest.phpcreate mode 100644 tests/Unit/Component/ES/QueuePriorityEnumTest.phpcreate mode 100644 tests/Unit/Notifications/Activities/SmsReceivedTest.phpcreate mode 100644 tests/Unit/Services/Mail/TextRelayServiceTest.phplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20963-fix-imporSwitched to a new branch 'JY-20963-fix-import-on-deleted-entity'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.phWhat's next:Try Docker Debug forseamless, persistent debugging tools in any container or image →Learn moreat [URL_WITH_CREDENTIALS] (JY-20963-fix-import-on-deleted-entdocker exec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.phPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime: 8.3.30Running analysis on 7 cores with 10 files perprocess.Parallel runner is an experimental feature and may be unstable,useitat yourownrisk.Loaded config default from".php-cs-fixer.dist.php"5691/5691100%APP ()•••ED→HomeDMsActivityFilesLaterMore+Jiminny ...CHSIICCTIS#general# happy_birthday#jiminny-bg# platform-tickets# product_launches#random# releases# sofia-office# support# thank-yous# the_people_of_jimi...° Direct messages. Stoyan TomovGalya Dimitrova "Nikolay YankovP. Aneliya Angelova. Stoyan Tanevdo James Graham8. Stefka Stoyanova4o Vasil Vasilev&: Todor StamatovLukas Kovalik y... OAppsJira CloudToast, 0labl100% <478•Fri 22 May 14:27:51Describe what you are looking forStoyan TomovMessagesздрастиAdd canvasO FilesMore ~+Monday, May 18th ~идея си нЯми.-ами прати при нас, и ще видимпо принцип Al call scoring май беше processingно пак Ті е при насStoyan Tomov 10:54 AMеми и аз така си го тьлкувамреално проблема не е със саматафункционалност на Al Call Scoring-aLukas Kovalik 10:54 AMпрати тогава при насStoyan Tomov 10:54 AMпросто че обикновени юзъри получават грешкакато отидат на Team Insights да видят чартоветеLukas Kovalik 10:54 AMако се наложи ще го преместимToday ~Lukas Kovalik 2:27 PMздрастиимаш ли минутка, трябва ми малко помощ седин тикетили когато имаш времеhttps://jiminny.atlassian.net/browse/SRD-6848Message Stoyan TomovFixed 0 of 5691 files in 96.077 seconds, 67.00 MBmemory used...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71146
|
NULL
|
0
|
2026-05-22T11:27:51.299873+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449271299_m2.jpg...
|
Slack
|
Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tomov (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-05-22/1779 /Users/lukas/.screenpipe/data/data/2026-05-22/1779449271299_m2.jpg...
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5152925,"top":1.0,"width":0.011968086,"height":-0.058260202},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.01761968,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.02925532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.5980718,"top":1.0,"width":0.0026595744,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5465425,"top":1.0,"width":0.024268618,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.043882977,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.04454787,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.022273935,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.012300532,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.018284574,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bugs","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.010638298,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.034574468,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.027593086,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.5518617,"top":1.0,"width":0.025930852,"height":-0.09177971},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"happy_birthday","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"you","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.61170214,"top":1.0,"width":0.030917553,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":19,"bounds":{"left":0.64361703,"top":1.0,"width":0.034242023,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":18,"bounds":{"left":0.6788564,"top":1.0,"width":0.020944148,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.70113033,"top":1.0,"width":0.020279255,"height":-0.09177971},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.72107714,"top":1.0,"width":0.010970744,"height":-0.09177971},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"on_screen":false,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 15th at 12:34:04 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:34 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"явно никой не го ползва че чак сега разбрахме","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:50:41 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:50 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:01 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:24 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"чудя се само","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:30 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"това е за платформ екипа нали?","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:39 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"понеже касае само Team Insights","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:51:44 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:51","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"и как се показва там","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:52:41 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"идея си нямам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:02 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ами прати при нас, и ще видим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:53:42 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"по принцип AI call scoring май беше processing но пак TI е при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:01 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"еми и аз така си го тълкувам","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"May 18th at 10:54:15 AM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"реално проблема не е със самата функционалност на AI Call Scoring-a","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:30 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"прати тогава при нас","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tomov","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:35 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"May 18th at 10:54:36 AM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:54 AM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако се наложи ще го преместим","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":25,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"Today at 2:27:15 PM","depth":25,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27 PM","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:29 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"имаш ли минутка, трябва ми малко помощ с един тикет","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:49 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"или когато имаш време","depth":26,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 2:27:51 PM","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:27","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":26,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6848","depth":27,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"on_screen":false,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"on_screen":false,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":24,"on_screen":true,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"on_screen":false,"role_description":"text"}]...
|
-3577930065355285455
|
-3586670898714326948
|
typing_pause
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
1
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
bugs
confusion-clinic
curiosity_lab
engineering
general
happy_birthday
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Aneliya Angelova
Stoyan Tanev
James Graham
Stefka Stoyanova
Vasil Vasilev
Todor Stamatov
Lukas Kovalik
you
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
May 15th at 12:34:04 PM
12:34 PM
явно никой не го ползва че чак сега разбрахме
Jump to date
Stoyan Tomov
May 18th at 10:50:41 AM
10:50 AM
здрасти
May 18th at 10:51:01 AM
10:51
има малък проблем с това как и кой може да гледа AI Call Scoring-a в Team Insights
May 18th at 10:51:24 AM
10:51
чудя се само
May 18th at 10:51:30 AM
10:51
това е за платформ екипа нали?
May 18th at 10:51:39 AM
10:51
понеже касае само Team Insights
May 18th at 10:51:44 AM
10:51
и как се показва там
Lukas Kovalik
May 18th at 10:52:36 AM
10:52 AM
здрасти
May 18th at 10:52:41 AM
10:52
идея си нямам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:02 AM
10:53
ами прати при нас, и ще видим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:53:42 AM
10:53
по принцип AI call scoring май беше processing но пак TI е при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:01 AM
10:54 AM
еми и аз така си го тълкувам
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
May 18th at 10:54:15 AM
10:54
реално проблема не е със самата функционалност на AI Call Scoring-a
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:30 AM
10:54 AM
прати тогава при нас
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tomov
May 18th at 10:54:35 AM
10:54 AM
просто че обикновени юзъри получават грешка като отидат на Team Insights да видят чартовете
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
May 18th at 10:54:36 AM
10:54 AM
ако се наложи ще го преместим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Lukas Kovalik
Today at 2:27:15 PM
2:27 PM
здрасти
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:29 PM
2:27
имаш ли минутка, трябва ми малко помощ с един тикет
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:49 PM
2:27
или когато имаш време
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 2:27:51 PM
2:27
https://jiminny.atlassian.net/browse/SRD-6848
https://jiminny.atlassian.net/browse/SRD-6848
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel
••0!Platform Sprint 4 Q2 - Platform Te-7 fJy-209121 Fallback mechanism fo(SRD-6848] Sidekick SMS issu X• JY-20676 delete AJ reports relateJY-20963 fix deleted object imporPipelines - jiminny/aps)SevenShores|Hubspot\Exceptions8 JiminnyJY-20879) Enable users to use thiSentry error)* JY.20962 fix deleted obiect imnon# (JY-20813] Twilio number is not rel+ New TabPronlles00O JIMINNY@ For you(• Recent|# Starred•$ AppsQ Spaces+.*.Jiminny (New)( Service-Desk@ SummaryQueues+ **v leam Priority5 All open tickets 11Unassigned t...1•, Support tea...E Raised by meEj Assigned to ..•, Service requ...6b Plattorm team& Processing t...a Site reliability...oE New features... 0j InfoSec issues 0@ Ready for Cu.. 2#, Resolved ti... 999+= View all queuesE) Service requestsA Incidentsilll Reports@ Operations• Knowledae Base0 CuctomoreQ Channels• Email loas⅘> Developer escalationsafs Slack integrationQ Search‹ S0 l O Б100% C/ & • Fri 22 May 14:27:50C Ask Rovo ® Ê Q< BackSE SRD-6848Sidekick SMS issueLink work itemEAddform & Add designCreate v..Stoyan Tomov raised this request via JiraHide detailsDescription • Unsaved changesHey team,Scott de Zoeten from Reward Gateway-Edenred reached out to complain that he got an automated email stating that his SMS from the 10th of May was not sent toone of his orosoects.I tried investigating (via CloudWatch logs, Twilio messaging logs, Sentry, etc), but I couldn't find any trace of his attempted reply to that prospect ([PHONE]).To send the text message, he replied to the email he got when the prospect texted him first:Text from 027 513 8300Ill call you back.To send a message back, just reply to this email.And this is the email he got after replying to the email:+ CreateIn Progressy~ DetailsAssigneeReporter@ Lukas KovalikStoyan TomovRequest TypeKnowledge base# Report a bugE View related articlesPriority levelP2 Medium)Dev TeamPlatform teamOrganizationReward Gateway-EdenredCanny LinksOpen Canny Links> More fields Labels. Time tracking, Tvpe of InfoSec incident. Components(InfoSec), Client. Affected user...> Automation 4 Rule executions> featureOS Open featureos~ IntercomShowing 1 out of 1 linked conversations& Scott de Zoeten> Sentry al Linked IssuesCreated 13 May 2026 at 08:42Updated 2 days agoConfigureHello,...
|
NULL
|
NULL
|
NULL
|
NULL
|