|
83873
|
2896
|
0
|
2026-05-28T11:10:57.589493+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966657589_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"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":4,"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":5,"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":4,"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":5,"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":4,"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":5,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-4134596929036806152
|
-3115541994247228191
|
typing_pause
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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...
|
83870
|
NULL
|
NULL
|
NULL
|
|
83874
|
2895
|
1
|
2026-05-28T11:10:58.974479+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966658974_m1.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"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,"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,"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,"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,"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,"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":3,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5255108882933746727
|
-3106536994015742749
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:...
|
83872
|
NULL
|
NULL
|
NULL
|
|
83875
|
2896
|
1
|
2026-05-28T11:10:59.078397+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966659078_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand sidebar [
Switch sites or apps...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"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":4,"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":5,"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":4,"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":5,"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":4,"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":5,"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":"Expand sidebar [","depth":3,"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":"Expand sidebar [","depth":5,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.03723404,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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}]...
|
-1433522908723480708
|
-4259460766365322015
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand sidebar [
Switch sites or apps...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83876
|
2895
|
2
|
2026-05-28T11:11:02.015791+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966662015_m1.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a2 FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaViewHistoryBookmarksProfilesToolsV ALL VAULTS8My vaultExported%8All items* FavouritesBinTYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendWindowHelpQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies...J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log..XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...Direct messages8. Vasil Vasilev. Stoyan Tomov DLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrova La. Stefka Stoyanova%: Todor Stamatov&. Steliyan Georgiev. Vesg. Mira100% CThu 28 May 14:11:01Describe what you are looking forVasil Vasilev6 0• Messagest Add canvashttps://github.comO FilesMore v+app/pull/12136TodayVasil Vasilev 12:00 PMЗдрасти, ЛукашГОТОВ СИмалко по късно и на мен ще ми трябва ревю заедин голям featureно ще ти пиша, като е готов за гледане (edited)Lukas Kovalik 12:11 PMoк, mersiNewVasil Vasilev 1:23 PMкато имаш време, разгледай този интересен ПР:https://github.com/jiminny/app/pull/12130написах supervisor клас AsyncUpdateSupervisor,който се пали от supervisorctl, като тоя класAsyncUpdateSupervisor пуска два паралелнипроцеса, един за обработка на активита и вториза обработка на сделкипроцесите са отделни, за да не се борят замясто под сльнцето в един и сьщо процес, даможем да им мерим поотделно кой колко паметяде, и съответно да нагласяме размера на всекиbatch по типи да не си пречат, когато има данни заиндескиране в опашките и за activity и заopportunityMessage Vasil Vasilev+Aa..•...
|
NULL
|
-7171120151625435422
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a2 FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaViewHistoryBookmarksProfilesToolsV ALL VAULTS8My vaultExported%8All items* FavouritesBinTYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendWindowHelpQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies...J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log..XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...Direct messages8. Vasil Vasilev. Stoyan Tomov DLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrova La. Stefka Stoyanova%: Todor Stamatov&. Steliyan Georgiev. Vesg. Mira100% CThu 28 May 14:11:01Describe what you are looking forVasil Vasilev6 0• Messagest Add canvashttps://github.comO FilesMore v+app/pull/12136TodayVasil Vasilev 12:00 PMЗдрасти, ЛукашГОТОВ СИмалко по късно и на мен ще ми трябва ревю заедин голям featureно ще ти пиша, като е готов за гледане (edited)Lukas Kovalik 12:11 PMoк, mersiNewVasil Vasilev 1:23 PMкато имаш време, разгледай този интересен ПР:https://github.com/jiminny/app/pull/12130написах supervisor клас AsyncUpdateSupervisor,който се пали от supervisorctl, като тоя класAsyncUpdateSupervisor пуска два паралелнипроцеса, един за обработка на активита и вториза обработка на сделкипроцесите са отделни, за да не се борят замясто под сльнцето в един и сьщо процес, даможем да им мерим поотделно кой колко паметяде, и съответно да нагласяме размера на всекиbatch по типи да не си пречат, когато има данни заиндескиране в опашките и за activity и заopportunityMessage Vasil Vasilev+Aa..•...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83877
|
2896
|
2
|
2026-05-28T11:11:02.162801+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966662162_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxViewhsttonooountrnPotLe.WVindownel:myaulass FirefoxViewhsttonooountrnPotLe.WVindownel:myaulassonineutralserviceocsnforoleecon8) JIMINNYQ SearchPipelines - jiminny/app* (JY-20613) Allow owner's role to tText relay]Deleted object error6s Uncovered Lines on New Code -JY-20963 fix deleted object impsJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminioonre Reso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Te8 Jiminny* (SRD-6881) (On demand) Tre XSona Strbramaal an at 27/05/2021O Illyana Netsova at 27/05/2026, 18Jimn.) Jy 20910 schedule parallel update— Now Tab1SUCKI0 SRD-6881Steps to reproduceOoenyminny on zu2. Create a search with a word in the transcript fieldS. save the search and create a nuage.4. Open something else and then return to the search, the wordCustomer voeactual outcomeexoeceooucomeSeverity levelSMBine worc cisappearsThe word in the transcript field should appear when opening an already saved search with it.S2Root causeAttachmentsAChiMIWork lodApprovals0 Summarise commentsAdd internal noteReply to customerPro tio: press M to commentLukas Kovalik 1 second ago 8 Internal noteIn order to save a transcript, the client first needs to search by it. It needs to appear in the filter. In this case it was not there. The client just typed the transcript phrasebut never searched ov it. Theretore. it was not recoanized as a valid tiiter and was not included in the saved search.Pricing Concert1166 activitiesTopics Dutsre Pikins x) CSort ty: Most recentn serch O CleralOESOMОД100% K53 8 - Thu 28 May 14:11:01O ASK ROVO A ® €+ Create1AnalyzingyDetailsAssigneeReporterRequest TypeKnowledge basePriority levelDev TeamCanny Links® Lukas Kovalik@ Illyana Netseva• Reporta bugE View related articlesP2 MediumPlatform teamOpen Canny Links> More fields Labels, Time tracking, Type of InfoSec incident, Components (InfoSec), Clent, Alfected u...> Automation 4 Rule executions> featureOS § Open featureosIntercomShowing 1 out of 1 linked conversations& Sona Subramanian..>> Sentry all Linked IssuesCreated 18 hours agoUpdated 4 hours ago@ Configure...
|
NULL
|
1369932089725293614
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxViewhsttonooountrnPotLe.WVindownel:myaulass FirefoxViewhsttonooountrnPotLe.WVindownel:myaulassonineutralserviceocsnforoleecon8) JIMINNYQ SearchPipelines - jiminny/app* (JY-20613) Allow owner's role to tText relay]Deleted object error6s Uncovered Lines on New Code -JY-20963 fix deleted object impsJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminioonre Reso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Te8 Jiminny* (SRD-6881) (On demand) Tre XSona Strbramaal an at 27/05/2021O Illyana Netsova at 27/05/2026, 18Jimn.) Jy 20910 schedule parallel update— Now Tab1SUCKI0 SRD-6881Steps to reproduceOoenyminny on zu2. Create a search with a word in the transcript fieldS. save the search and create a nuage.4. Open something else and then return to the search, the wordCustomer voeactual outcomeexoeceooucomeSeverity levelSMBine worc cisappearsThe word in the transcript field should appear when opening an already saved search with it.S2Root causeAttachmentsAChiMIWork lodApprovals0 Summarise commentsAdd internal noteReply to customerPro tio: press M to commentLukas Kovalik 1 second ago 8 Internal noteIn order to save a transcript, the client first needs to search by it. It needs to appear in the filter. In this case it was not there. The client just typed the transcript phrasebut never searched ov it. Theretore. it was not recoanized as a valid tiiter and was not included in the saved search.Pricing Concert1166 activitiesTopics Dutsre Pikins x) CSort ty: Most recentn serch O CleralOESOMОД100% K53 8 - Thu 28 May 14:11:01O ASK ROVO A ® €+ Create1AnalyzingyDetailsAssigneeReporterRequest TypeKnowledge basePriority levelDev TeamCanny Links® Lukas Kovalik@ Illyana Netseva• Reporta bugE View related articlesP2 MediumPlatform teamOpen Canny Links> More fields Labels, Time tracking, Type of InfoSec incident, Components (InfoSec), Clent, Alfected u...> Automation 4 Rule executions> featureOS § Open featureosIntercomShowing 1 out of 1 linked conversations& Sona Subramanian..>> Sentry all Linked IssuesCreated 18 hours agoUpdated 4 hours ago@ Configure...
|
83875
|
NULL
|
NULL
|
NULL
|
|
83878
|
2895
|
3
|
2026-05-28T11:11:05.533797+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966665533_m1.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link
[On demand] Transcription in saved search disappears - edit summary, edit
[On demand] Transcription in saved search disappears
[On demand] Transcription in saved search disappears
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
Iliyana Netseva
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal
Description
Description
Edit Description, edit
I have tested the nudges (saved searches) with a word in the transcription field and the word disappears every time on EU, and a user has reported the same on US:
the user session:
LogRocket
LogRocket
Here is a link to my session:
LogRocket
LogRocket
Data Centre
More information about...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"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,"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,"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,"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,"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,"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":3,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":4,"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":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":4,"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":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand sidebar [","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar [","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"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":5,"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":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Back","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":10,"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-6881","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6881","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"[On demand] Transcription in saved search disappears - edit summary, edit","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"[On demand] Transcription in saved search disappears","depth":7,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[On demand] Transcription in saved search disappears","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link work item","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Link work item","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Link web pages and more","depth":7,"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":"Link web pages and more","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add form","depth":8,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add form","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add design","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add design","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":8,"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":"Create","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add app","depth":7,"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":"Iliyana Netseva","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"raised this request","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jira","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hide details","depth":6,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide details","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View request in portal","depth":6,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View request in portal","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Description","depth":6,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Description, edit","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"I have tested the nudges (saved searches) with a word in the transcription field and the word disappears every time on EU, and a user has reported the same on US:","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the user session:","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"LogRocket","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"LogRocket","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a link to my session:","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"LogRocket","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"LogRocket","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Data Centre","depth":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":6,"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8333862882849592626
|
-3619917181538732830
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link
[On demand] Transcription in saved search disappears - edit summary, edit
[On demand] Transcription in saved search disappears
[On demand] Transcription in saved search disappears
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
Iliyana Netseva
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal
Description
Description
Edit Description, edit
I have tested the nudges (saved searches) with a word in the transcription field and the word disappears every time on EU, and a user has reported the same on US:
the user session:
LogRocket
LogRocket
Here is a link to my session:
LogRocket
LogRocket
Data Centre
More information about...
|
83876
|
NULL
|
NULL
|
NULL
|
|
83879
|
2896
|
3
|
2026-05-28T11:11:05.687703+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966665687_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"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":4,"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":5,"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":4,"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":5,"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":4,"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":5,"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":"Expand sidebar [","depth":3,"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":"Expand sidebar [","depth":5,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.03723404,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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":7,"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":3,"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":5,"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":4,"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}]...
|
8025531449175793267
|
-4267309080364386591
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83880
|
2896
|
4
|
2026-05-28T11:11:12.547458+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966672547_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5255108882933746727
|
-3106536994015742749
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:...
|
83879
|
NULL
|
NULL
|
NULL
|
|
83881
|
2895
|
4
|
2026-05-28T11:11:12.652280+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966672652_m1.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"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,"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,"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,"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,"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,"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":3,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":4,"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":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":4,"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":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand sidebar [","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar [","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"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":5,"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":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Back","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":10,"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-6881","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6881","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9142060910006502698
|
-3115513475664382238
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83882
|
2895
|
5
|
2026-05-28T11:11:14.948591+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966674948_m1.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
1451921993773326004
|
-5736636977105734973
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail...
|
83881
|
NULL
|
NULL
|
NULL
|
|
83883
|
2896
|
5
|
2026-05-28T11:11:14.884253+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966674884_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9203726579187570650
|
-6574314066069035822
|
click
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
FirefoxViewToolsPipelines - jiminny/apprezuots now ownersroe toeText relayDeleted object error6 Uncovered Lines on New Code -JY-20963 fix deleted object impsoain alestorchJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminioonre Roso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Tetranscript ss issue8 JiminnyhsttonooountrnPotLe.WVindownel:my.aulassonineutrabciviccocskioro ceo okore8) JIMINNY* (SRD-6881) (On demand) Tre XSona Subramaaian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jimn.) Jy 20910 schedule parallel update— Now Tab1SUCKI0 SRD-6881Steps to reproduceOoenyminny on zu2. Create a search with a word in the transcript fields. save the search and create a nuage.4. Open something else and then return to the search, the wordCustomer tvoeactual outcomeexoeeeooconeSeverity levelImoacNoneRoot causeTranscriot filter was not used, iust typed but not searched by.AttachmentsActivityQ SearchSMBThe word disappearsThe word in the transcript field should appear when opening an already saved search with it.S2HistoryWork log Approvals• Summarise comments =Add internal note / Reply to customerPro tip: press (M) to commentLukas Kovalik 1 second ago & Internal noteJin ordecto save a transerint the client first needs to search hv itat needs to annear in the fliter in this case t was not there The client iust tuned the transcrint nhrasebut never searched by it. Therefore, it was not recognized as a valid filter and was not included in the saved search.1166 activitieso saera O ClrasOASOMОД100% K52 8 • Thu 28 May 14:11:14O ASK ROVO A ® €+ CreateAnalyzingBACKLOGBLOCKEDESCALATEDPLANNEOREPORTEDIN PROGRESSREADY FOR CUSTOMERWATTING FOR INFORMATIONWAITING FOR PRIORITIZATIONView workflow[$ Explain workflow® Lukas Kovalik@ Illyana Netseva• Reporta bugE View related articlesP2 MediumPlatform teamOpen Canny Links> More fields Labels, Time tracking, Type of InfoSec incident, Components (InfoSec), Client, Affected u...> Automation 4 Rule executions> featureOS 5= Open featureosIntercomShowing 1 out of 1 linked conversations& Sona Subramanian..>> Sentry all Linked IssuesCreated 18 hours agoUpdated 4 seconds ago@ Configure...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83884
|
2896
|
6
|
2026-05-28T11:11:20.383685+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966680383_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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}]...
|
933945980010157005
|
-2178800898458211086
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
rircroxViewhsttonooountrnPotLe.WVindownel:my.aulasson.neutralscrviceocsnforoleecom8) JIMINNYPipelines - jiminny/app* (JY-20613) Allow owner's role to tText relay]Deleted object error6 Uncovered Lines on New Code -JY-20963 fix deleted object impsooin alestorchJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminiwoonte Roso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Tetranscript ss issue8 Jiminny* (SRD-6881) (On demand) Tre XSona Subramaaian at 27/05/202O Illyana Netsova at 27/05/2026, 18aJimn.) Jy 20910 schedule parallel update— Now TabQ Search,OUCK0 SRD-6881Actual outcomeThe word disappearsExpected outcomeThe word in the transcript field should appear when opening an already saved search with it.Severity levelS2ImpactNoneRoot causeTranscript filter was not used, just typed but not searched by.Atachments39060720702 851mgAChtVIHistoryWork lodApprovalsSummarise commentsAdd internal note Reoiv to customeriPro tio: oress M to conLukas Kovalik 1 second ago 8 Internal note ®In order to save a transcript, the client first needs to search by it. It needs to appear in the filter. In this case it was not there. The client just typed the transcript phrasebut never searched by it. Therefore, it was not recognized as a valid filter and was not included in the saved search.1166 activitiesSort ty: Most recent188|o senoh O CaralRohit Puoi at FirstLicht Home.Iintro Merting - Sme Se$: 20 senTer Keun$0 20 35m05/26/2026.106POESOMОД100% K53 8 - Thu 28 May 14:11:19O ASK ROVO A ® €+ CreateReady for customerDetailsAssigneeReporterRequest TypeKnowledge basePriority levelDev TeamCanny Links® Lukas Kovalik@ Illyana Netseva• Reporta bugE View related articlesP2 MediumPlatform teamOpen Canny Links> More fields Labels, Time tracking, Type of InfoSec incident, Components (InfoSec), Client, Affected u...> Automation 4 Rule executions> featureOS 5= Open featureosIntercomShowing 1 out of 1 linked conversations& Sona Subramanian..>> Sentry Sll Linked IssuesCreated 18 hours agoUpdated 4 seconds ago@ Configure...
|
83883
|
NULL
|
NULL
|
NULL
|
|
83885
|
2896
|
7
|
2026-05-28T11:11:23.539741+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966683539_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"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":4,"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":5,"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":4,"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":5,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6677660237015139604
|
-3115541994247228189
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83886
|
2896
|
8
|
2026-05-28T11:11:29.708003+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966689708_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link
[On demand] Transcription in saved search disappears - edit summary, edit
[On demand] Transcription in saved search disappears
[On demand] Transcription in saved search disappears
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"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":4,"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":5,"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":4,"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":5,"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":4,"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":5,"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":"Expand sidebar [","depth":3,"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":"Expand sidebar [","depth":5,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.03723404,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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":7,"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":3,"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":5,"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":4,"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":6,"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":6,"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":8,"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":6,"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":8,"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":6,"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":8,"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":6,"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":8,"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":6,"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":8,"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":"Back","depth":8,"bounds":{"left":0.22473404,"top":0.0,"width":0.024767287,"height":0.01915403},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back","depth":10,"bounds":{"left":0.23470744,"top":0.0,"width":0.010804521,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":10,"bounds":{"left":0.2534907,"top":0.0,"width":0.007978723,"height":0.01915403},"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"SRD-6881","depth":10,"bounds":{"left":0.26146942,"top":0.0,"width":0.018783245,"height":0.01915403},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6881","depth":12,"bounds":{"left":0.26146942,"top":0.0,"width":0.018783245,"height":0.011971269},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"bounds":{"left":0.2789229,"top":0.0,"width":0.005319149,"height":0.012769354},"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"[On demand] Transcription in saved search disappears - edit summary, edit","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"[On demand] Transcription in saved search disappears","depth":7,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[On demand] Transcription in saved search disappears","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link work item","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Link work item","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Link web pages and more","depth":7,"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":"Link web pages and more","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add form","depth":8,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add form","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add design","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add design","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":8,"on_screen":false,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7875375908587722862
|
6188924523786859746
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link
[On demand] Transcription in saved search disappears - edit summary, edit
[On demand] Transcription in saved search disappears
[On demand] Transcription in saved search disappears
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...
|
83885
|
NULL
|
NULL
|
NULL
|
|
83887
|
2896
|
9
|
2026-05-28T11:11:32.878381+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966692878_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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}]...
|
1246495456691287981
|
-1953619956174818077
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83888
|
2895
|
6
|
2026-05-28T11:11:45.455802+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966705455_m1.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link
[On demand] Transcription in saved search disappears - edit summary, edit
[On demand] Transcription in saved search disappears
[On demand] Transcription in saved search disappears
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
Iliyana Netseva
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"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,"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,"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,"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,"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,"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":3,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":4,"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":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":4,"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":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand sidebar [","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Expand sidebar [","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"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":5,"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":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Back","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":10,"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-6881","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6881","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"[On demand] Transcription in saved search disappears - edit summary, edit","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"[On demand] Transcription in saved search disappears","depth":7,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[On demand] Transcription in saved search disappears","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link work item","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Link work item","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Link web pages and more","depth":7,"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":"Link web pages and more","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add form","depth":8,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add form","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add design","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add design","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":8,"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":"Create","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add app","depth":7,"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":"Iliyana Netseva","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"raised this request","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jira","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hide details","depth":6,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide details","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View request in portal","depth":6,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View request in portal","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
1546520891069237739
|
5036001300119352550
|
idle
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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]
Back
Back
Bug - Change work type
SRD-6881
SRD-6881
Copy link
[On demand] Transcription in saved search disappears - edit summary, edit
[On demand] Transcription in saved search disappears
[On demand] Transcription in saved search disappears
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
Iliyana Netseva
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83889
|
2896
|
10
|
2026-05-28T11:12:03.367953+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966723367_m2.jpg...
|
Firefox
|
[SRD-6881] [On demand] Transcription in saved sear [SRD-6881] [On demand] Transcription in saved search disappears - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6881...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"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.56823623,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.72625697,"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":3,"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":4,"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":5,"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":4,"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":5,"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":4,"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":5,"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":"Expand sidebar [","depth":3,"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":"Expand sidebar [","depth":5,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.03723404,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":5,"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":7,"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":3,"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":5,"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":4,"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":6,"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":6,"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":8,"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":6,"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}]...
|
-433612407890503934
|
-3115513475664382239
|
idle
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Close tab
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
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
Expand sidebar [
Expand 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...
|
83887
|
NULL
|
NULL
|
NULL
|
|
83890
|
2895
|
7
|
2026-05-28T11:12:06.393711+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966726393_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a2 FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaViewHistoryBookmarksProfilesToolsV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendWindowHelpQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log..XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...Direct messages8. Vasil Vasilev. Stoyan Tomov OLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova* Todor Stamatov&. Steliyan Georgiev. Vesg. Mira(alo)100% CThu 28 May 14:12:06Describe what you are looking forVasil Vasilev6 0• MessagesAdd canvashttps://github.comO FilesMore~+app/pull/12136Today12:00 PMVasil VasilevЗдрасти, ЛукашГОТОВ СИмалко по късно и на мен ще ми трябва ревю заедин голям featureно ще ти пиша, като е готов за гледане (edited)Lukas Kovalik 12:11 PMoк, mersiNewVasil Vasilev ©!1:23 PMкато имаш време, разгледай този интересен ПР:https://github.com/jiminny/app/pull/12130написах supervisor клас AsyncUpdateSupervisor,който се пали от supervisorctl, като тоя класAsyncUpdateSupervisor пуска два паралелнипроцеса, един за обработка на активита и вториза обработка на сделкипроцесите са отделни, за да не се борят замясто под сльнцето в един и сьщо процес, даможем да им мерим поотделно кой колко паметяде, и съответно да нагласяме размера на всекиbatch по типи да не си пречат, когато има данни заиндескиране в опашките и за activity и заopportunityMessage Vasil Vasilev 10l Lunch time+Aa...
|
NULL
|
5590214507047407252
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a2 FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaViewHistoryBookmarksProfilesToolsV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendWindowHelpQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log..XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...Direct messages8. Vasil Vasilev. Stoyan Tomov OLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova* Todor Stamatov&. Steliyan Georgiev. Vesg. Mira(alo)100% CThu 28 May 14:12:06Describe what you are looking forVasil Vasilev6 0• MessagesAdd canvashttps://github.comO FilesMore~+app/pull/12136Today12:00 PMVasil VasilevЗдрасти, ЛукашГОТОВ СИмалко по късно и на мен ще ми трябва ревю заедин голям featureно ще ти пиша, като е готов за гледане (edited)Lukas Kovalik 12:11 PMoк, mersiNewVasil Vasilev ©!1:23 PMкато имаш време, разгледай този интересен ПР:https://github.com/jiminny/app/pull/12130написах supervisor клас AsyncUpdateSupervisor,който се пали от supervisorctl, като тоя класAsyncUpdateSupervisor пуска два паралелнипроцеса, един за обработка на активита и вториза обработка на сделкипроцесите са отделни, за да не се борят замясто под сльнцето в един и сьщо процес, даможем да им мерим поотделно кой колко паметяде, и съответно да нагласяме размера на всекиbatch по типи да не си пречат, когато има данни заиндескиране в опашките и за activity и заopportunityMessage Vasil Vasilev 10l Lunch time+Aa...
|
83888
|
NULL
|
NULL
|
NULL
|
|
83891
|
2896
|
11
|
2026-05-28T11:12:06.506308+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966726506_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rircroxViewhsttonooountrnroie.WVindowHelpny.atlass rircroxViewhsttonooountrnroie.WVindowHelpny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-68818) JIMINNY1SUCKI0 SRD-6881Q SearchPipelines - jiminny/app* (JY-20613) Allow owner's role to tText relay]Deleted object error6 Uncovered Lines on New Code -JY-20963 fix deleted object impsoain alestorchJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminioonre Reso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Te8 Jiminny* (SRD-6881) (On demand) Tre XSona Strbramaal an at 27/05/2021O Illyana Netsova at 27/05/2026, 18Jimn.Jy 20910 schedule parallel up: x80607202 02 081m%ACuVILYHEOVIVVOrK loOAObrOVaISummarise commentsAdd internal note / Reply to customerPro tip: press M) to commentLukas Kovaltk 1 second ado a Internal notelIn order to save a transcript, the client first needs to search by it. It needs to appear in the filter. In this case it was not there. The client just typed the transcript phraseoutneweSearchec.ovtnererore.twasnourecoon?exasavalto.ttkeranwasnoutncluoeetntnesavesseatch1166 activitiesTopick: Budpee Prices x)Coa he Mant tetensRohit Puniat FirstUieht HomeMK©Tyie Keunprice ORpay OR.cont OR bod0 EntamErcan*mattrintamakiesynergynonkAsdendum Reviewl Seral : Synerzlynelle homeinstead@gmailclave Coleman at Synergy Ho...8° 80 um20 40 35m$: $0 sem80 40 23m80 4g tamONONROR41-15 PMMhAMOA tOtG€ - Edit - DeleteOESOMОД100% K53 8 - Thu 28 May 14:12:06O ASK ROVO A ® €+ CreateReady for customerDetailsAssigneeReporterRequest TypeKnowledge basePriority levelDev TeamCanny Links® Lukas Kovalik@ Illyana Netseva• Reporta bugE View related articlesP2 MediumPlatform teamOpen Canny Links> More fields Labels, Time tracking, Type of InfoSec incident, Components (InfoSec), Client, Alfected u...> Automation 4 Rule executions> featureOS 5= Open featureosIntercomShowing 1 out of 1 linked conversations& Sona Subramanian..>> Sentry Sll Linked IssuesCreated 18 hours agoUpdated 4 seconds ago@ Configure...
|
NULL
|
-1448188945839516338
|
NULL
|
click
|
ocr
|
NULL
|
rircroxViewhsttonooountrnroie.WVindowHelpny.atlass rircroxViewhsttonooountrnroie.WVindowHelpny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-68818) JIMINNY1SUCKI0 SRD-6881Q SearchPipelines - jiminny/app* (JY-20613) Allow owner's role to tText relay]Deleted object error6 Uncovered Lines on New Code -JY-20963 fix deleted object impsoain alestorchJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminioonre Reso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Te8 Jiminny* (SRD-6881) (On demand) Tre XSona Strbramaal an at 27/05/2021O Illyana Netsova at 27/05/2026, 18Jimn.Jy 20910 schedule parallel up: x80607202 02 081m%ACuVILYHEOVIVVOrK loOAObrOVaISummarise commentsAdd internal note / Reply to customerPro tip: press M) to commentLukas Kovaltk 1 second ado a Internal notelIn order to save a transcript, the client first needs to search by it. It needs to appear in the filter. In this case it was not there. The client just typed the transcript phraseoutneweSearchec.ovtnererore.twasnourecoon?exasavalto.ttkeranwasnoutncluoeetntnesavesseatch1166 activitiesTopick: Budpee Prices x)Coa he Mant tetensRohit Puniat FirstUieht HomeMK©Tyie Keunprice ORpay OR.cont OR bod0 EntamErcan*mattrintamakiesynergynonkAsdendum Reviewl Seral : Synerzlynelle homeinstead@gmailclave Coleman at Synergy Ho...8° 80 um20 40 35m$: $0 sem80 40 23m80 4g tamONONROR41-15 PMMhAMOA tOtG€ - Edit - DeleteOESOMОД100% K53 8 - Thu 28 May 14:12:06O ASK ROVO A ® €+ CreateReady for customerDetailsAssigneeReporterRequest TypeKnowledge basePriority levelDev TeamCanny Links® Lukas Kovalik@ Illyana Netseva• Reporta bugE View related articlesP2 MediumPlatform teamOpen Canny Links> More fields Labels, Time tracking, Type of InfoSec incident, Components (InfoSec), Client, Alfected u...> Automation 4 Rule executions> featureOS 5= Open featureosIntercomShowing 1 out of 1 linked conversations& Sona Subramanian..>> Sentry Sll Linked IssuesCreated 18 hours agoUpdated 4 seconds ago@ Configure...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83892
|
2895
|
8
|
2026-05-28T11:12:09.964468+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966729964_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2112793529402417778
|
4739293140786619618
|
click
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
FirefoxFileEditDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaViewHistoryBookmarksProfilesToolsV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendWindowHelpQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log..XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...Direct messages8. Vasil Vasilev. Stoyan Tomov OLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova* Todor Stamatov&. Steliyan Georgiev. Vesg. Mira(alo)100% CThu 28 May 14:12:09Describe what you are looking forVasil Vasilev6 0• MessagesAdd canvashttps://github.comO FilesMore~+app/pull/12136Today12:00 PMVasil VasilevЗдрасти, ЛукашГОТОВ СИмалко по късно и на мен ще ми трябва ревю заедин голям featureно ще ти пиша, като е готов за гледане (edited)Lukas Kovalik 12:11 PMoк, mersiNewVasil Vasilev ©!1:23 PMкато имаш време, разгледай този интересен ПР:https://github.com/jiminny/app/pull/12130написах supervisor клас AsyncUpdateSupervisor,който се пали от supervisorctl, като тоя класAsyncUpdateSupervisor пуска два паралелнипроцеса, един за обработка на активита и вториза обработка на сделкипроцесите са отделни, за да не се борят замясто под сльнцето в един и сьщо процес, даможем да им мерим поотделно кой колко паметяде, и съответно да нагласяме размера на всекиbatch по типи да не си пречат, когато има данни заиндескиране в опашките и за activity и заopportunityMessage Vasil Vasilev 10l Lunch time+Aa...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83893
|
2896
|
12
|
2026-05-28T11:12:11.449308+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966731449_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2112793529402417778
|
4739293140786619618
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
FirefoxViewhsttonooonnurnPotLe.ToolsWindowHelp= github.com/jir~ Google GeminiQSOMДX 100%K 8• Thu 28 May 14:12:11Pipelines - jiminny/appBE upgrade libraries(JY-20613) Allow owner's role to bText relayDeleted object errorAxUewredtines on New cod aJY-20963 fix deleted object impsooin lestorchJiminny\Exceptions(EmailActivityfrM Inbox (1,733) - lukas.kovalik@jiminioonre Reso ve php 81.15 ded8 Jiminm,Platform Sorint 5.02 - Platform Te8 Jiminny7 (SRD-6881] (0n demand) TransoSona Sttbramaal an at 27/05/2026aIliyana Netsova at 27/05/2026, 188 Jiminenes20910 schedule oaralidl uesX— Now Tabjiminny / app 8<> Code1 Pull requests 34(. Agents • Actions 4 Wiki ® Security and quality 12 ~ Insights 03 SettingsJy 20910 schedule parallel update target processing #12130 •11 OpenVasil-Jiminny wants to merge 65 commits into master from JY-28918-schedule-parallel-update-target-processingP) Conversation 17• Commits 85IE Checks 3© Files changed 15Ail commits• Filter files.v - aorv apo/Coroonent /ES/EntitvTvoeReindexer.oho rUee -0,0 +1,38 eev — Comoonent/ESIEntityTypeReindexer.php•) ReindexTaroetStatsReporter.o.UpdateProcessManager.php~ E Consolev # Commands/Elasticsearch|AsyncUpdateEsEntities.phpAsyncUpdateSupervisor.php-DeleteEmailDocumentsCom…ReindexEntityTypes.phpRemoveGhostParticipantsCo.ResetAsyncElasticSearchCo...© Kernel php~ E Contracts/ESStopSignallnterface.php~ Ei Traits# GracefullyStoppable.php~ # tests/Unit/Component/ESEntityTypeReindexerTest.php* ReindexTargetStatsReporterTes.UpdateProcessManagerTest.phpUNNNNNNNSummarize page+ declare(strict typess.):+ namespace Jiminny\Component\ES;useannyconktacksco000050+ class EntityTypeReindexerprivate const int IDLE_SLEERpublic function constructlorivate readonly liodaterprivate readonly int sid--public function run(stringSthis->updateProcessMan.Sthis-suodateProcessManstthte.sintatoDeoeoscMan:do(SstonSional-searkSar....Shashork= Sthis--udSstooS ianal-smarksat11( Shashork) &...
|
83891
|
NULL
|
NULL
|
NULL
|
|
83894
|
2895
|
9
|
2026-05-28T11:12:14.384109+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966734384_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9222389497340259519
|
-6898569529260117821
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail...
|
83892
|
NULL
|
NULL
|
NULL
|
|
83895
|
2896
|
13
|
2026-05-28T11:12:14.878452+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966734878_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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}]...
|
3479347533214238294
|
-5709614829585959209
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83896
|
2896
|
14
|
2026-05-28T11:12:21.044861+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966741044_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5769554934583379348
|
-9166199011917826862
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce...
|
83895
|
NULL
|
NULL
|
NULL
|
|
83897
|
2896
|
15
|
2026-05-28T11:12:24.272748+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966744272_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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}]...
|
-8176076360148894496
|
-1953619956174293785
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83898
|
2896
|
16
|
2026-05-28T11:12:27.371670+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966747371_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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}]...
|
-2392427135185888880
|
7269752080680482023
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny...
|
83897
|
NULL
|
NULL
|
NULL
|
|
83899
|
2896
|
17
|
2026-05-28T11:12:32.522865+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966752522_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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":"AXButton","text":"Main menu","depth":5,"bounds":{"left":0.08228058,"top":0.09736632,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4066070249281182066
|
-3106538918161615645
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83907
|
2895
|
14
|
2026-05-28T11:13:03.079462+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966783079_m1.jpg...
|
Firefox
|
Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminn Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail — Work...
|
1
|
mail.google.com/mail/u/0/#inbox
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewGoHistoryWindowHelpDOCKERDOCKER ( SlackFileEditViewGoHistoryWindowHelpDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log...XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLater..•More+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...° Direct messages•. Vasil Vasilev 0o Stoyan TomovLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova*Todor Stamatov&. Steliyan Georgiev@ Vesg. Mira100% (C478• Thu 28 May 14:13:03Describe what you are looking for# engineering8 246 0• MessagesP CanvasC FilesMore v+ledicated Host in AWS ConsoleFriday, May 22ndYes, that's expected behavicr with EC2 Mac Dedicated Hosts, and it's one of the most important"gotchas" in AWS Mac.What happenedTouteterro acitiohWe mehnenhThat reservation is now tied to your accourtAWS enforces a minimum allocation period (typically 24 hours)|3 replies Last reply 6 days agoSaturday, May 23rd ~Ves 5:46 PMHey team,PHP 8.5 release is live. After the holidays fetch thelatest dev docker image to make sure you have the8.5.5 runtime locally.HHH6Today ~Vasil Vasilev ®l 2:07 PMAction failed with error: SDK executionerror: Error: Claude Code returned an errorresult: API Error: 400 You have reached yourspecified API usage limits. You will regainaccess on 2026-06-01 at 00:00 UTC.I exhausted up all review tokensMessage #engineering...
|
NULL
|
-1552408312290272384
|
NULL
|
click
|
ocr
|
NULL
|
SlackFileEditViewGoHistoryWindowHelpDOCKERDOCKER ( SlackFileEditViewGoHistoryWindowHelpDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log...XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLater..•More+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...° Direct messages•. Vasil Vasilev 0o Stoyan TomovLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova*Todor Stamatov&. Steliyan Georgiev@ Vesg. Mira100% (C478• Thu 28 May 14:13:03Describe what you are looking for# engineering8 246 0• MessagesP CanvasC FilesMore v+ledicated Host in AWS ConsoleFriday, May 22ndYes, that's expected behavicr with EC2 Mac Dedicated Hosts, and it's one of the most important"gotchas" in AWS Mac.What happenedTouteterro acitiohWe mehnenhThat reservation is now tied to your accourtAWS enforces a minimum allocation period (typically 24 hours)|3 replies Last reply 6 days agoSaturday, May 23rd ~Ves 5:46 PMHey team,PHP 8.5 release is live. After the holidays fetch thelatest dev docker image to make sure you have the8.5.5 runtime locally.HHH6Today ~Vasil Vasilev ®l 2:07 PMAction failed with error: SDK executionerror: Error: Claude Code returned an errorresult: API Error: 400 You have reached yourspecified API usage limits. You will regainaccess on 2026-06-01 at 00:00 UTC.I exhausted up all review tokensMessage #engineering...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83908
|
2895
|
15
|
2026-05-28T11:13:07.416721+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966787416_m1.jpg...
|
Firefox
|
Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminn Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail — Work...
|
1
|
mail.google.com/mail/u/0/#inbox
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
2851836541743944314
|
7224978872138212579
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
SlackFileEditViewGoHistoryWindowHelpDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log...XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...Direct messages•. Vasil Vasilev 0o Stoyan TomovLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova* Todor Stamatov&. Steliyan Georgiev. Vesg. Mira100% C8• Thu 28 May 14:13:07Describe what you are looking for# engineering8 246 0• MessagesPCanvasC FilesMore v+ledicated Host in AWS ConsoleFriday, May 22ndYes, that's expected behavicr with EC2 Mac Dedicated Hosts, and it's one of the most important"gotchas" in AWS Mac.What happenedTouteterro acitiohWe mehnenhThat reservation is now tied to your accourtAWS enforces a minimum allocation period (typically 24 hours)|3 replies Last reply 6 days agoSaturday, May 23rd ~Ves 5:46 PMHey team,PHP 8.5 release is live. After the holidays fetch thelatest dev docker image to make sure you have the8.5.5 runtime locally.HHH6Today ~Vasil Vasilev ®l 2:07 PMAction failed with error: SDK executionerror: Error: Claude Code returned an errorresult: API Error: 400 You have reached yourspecified API usage limits. You will regainaccess on 2026-06-01 at 00:00 UTC.I exhausted up all review tokensMessage #engineering...
|
83907
|
NULL
|
NULL
|
NULL
|
|
83909
|
2896
|
21
|
2026-05-28T11:13:08.295389+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966788295_m2.jpg...
|
Firefox
|
Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminn Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail — Work...
|
1
|
mail.google.com/mail/u/0/#inbox
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rircrox© Pipelines - |Iminnylapp* (JY-20613) Allow rircrox© Pipelines - |Iminnylapp* (JY-20613) Allow owner's role to tAxUemered tines on New codJY-20963 fix deleted object impsm.cwdSycaotionslsmalldcthatteM Inbox (1,733) - lukas.kovalike) xioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform Te8 JiminnySona Subramanian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jy 20910 schedule parallel updateViewhsttonooountrnPotLe.WVindownel:= mail.google.com/mail/u/0/#inbox~ Google GeminiGemini 3.1 Pro ~I'm on page *<tabTitle> Jy 20910 schedule parallel updatetarget processin</tabTitle>* with *«selection>@@-4,7 +4,6@@445namespace TestslUnitlComponentIES;5namespaceTestslUnit|ComponentIES:667-useChaseConey\LaravelDatadogHelper|Datadog:8useHere is a summary of the changes in the provided git diff for UpdateProcessManagerTest.phpStructural and Dependency ChangesReplaced Datadog: Removed the ChaseConey\LaravelDatadogHelper\Datadog)dependency and replaced it with Jiminny\Component\ES\ReindexTargetStatsReporter.Added Constants and Properties: Introduced a new ENVIRONMENT constant (set to"testing' ) and a (SstatsReporter property to hold the mock for the new stats reporter.Processor Instantiation: Updated the getProcessor() method to inject the newSstatsReporter mock into the UpdateProcessManager and utilize the ENVIRONMENTconstant.Test Case ModificationsRemoved Memory Logging Tests: DeletedtestLogMemoryUsageEmitsGaugeWhenLockTsAbsentandtestLogMemoryUsageSkipsGaugeWhenLockIsPresent entirely, as the Redis lock andDatadog gauge logic were removed.Added Empty Selection Test: Introduced testEmptySelectionLogsAndReturnsFalse toverify that processing an empty selection logs a debug message, skips batch manageroperations (generateName, scheduleWork, finishWork ), skips the stats reporter, andcleanly returns false.Updated Existing Tests: Modified testRunUpdate and testRunDoUpdateButThrottled toascort that the SctatcPonartar_sronort/methodic.called.andtoutilize theundatedAsk GeminiYour Jiminny chats aren't used to improve our modeis. Gemini is Al. It can make mistakes, so double check it. Your privacy & GeminSummarize pagesô:ChatM GmailComposelnoosSeteeSnoozedSentDrattCategoriesrurchaseWoreLabelsApp emailsGithubextensionJIRANotesSharedSentryAsk Gmail# Nikolay, sonarqubec. 2|[ # Stefka Stoyanova• * 359877878118, me 4 |[ * Twilio Notifications"Nixolay.sonarouo• * Nikolay .. stefka-j. 7 |# Datadog* Galya Dimitroval# Stefka Stoyanova# BambooHR359877878118, me 3mihailm.. sonaroub.# Datadog# Vasil, sona, Vese. 4# Jira# Docker* Docker*Veselin, sonaraubec. 21Datadog# Datadog• # Datadog# Close Team# Datadog*Loom447893937879, me 4Veselin. sonarcuo."OEMОД* 100% <#a: 8- Thu 28 May 14:13:07*Ljiminny/prophet) Add ai score filter (PR #523) - You can view, comment on, or merge this pull request online at: https//github.com/jiminny/prophet/pull/523 Commit Summary 0918834 Add ai sInvitation: Claude Code Show Case with James @ Mon Jun 1, 2026 2pm - 3pm (GMT+3) (Lukas Kovalik) - Claude Code Show Case with James Join with Google Meet - You have been invitoText message from 087 787 8118 - reply 3 th On Thu, May 28, 2026 at 10:47 AM Lukas Kovalik <[EMAIL]› wrote: reply 2 th On Thu, May 28, 2026 at 10:29 AM <[EMAIL] Twilio subaccount(s) suspended - 1 of your Twilio subaccount(s) have been suspended Your Twilio account Jiminny (Production) (AC8a9a88fe598e06154f5ed1623dbc9071), has 1 Twilimminnw brobherlubdakeREADmEtomaudestobomotnetsenwicemkesNSINUGITONSTPREWSY24EACONCENWNNOVACCAATNEON C TNO T ENDTOCCa GSAPСN ESENEOS E CUEICAEN MEAOSSEKEATИT «XACONTAATfiiminnv/orophetl Uodate Claude workflow to use new disallowedTools format (PR #521) - You can view, comment on. or merae this pull request online at: httos://aithub.com/iminnv/nrorYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 26. Metric Alerts 1 Total Event 1 Alert Recovered [Recovered) Dialers Stats Dialers MeInvitation: All Hands - Product focus @ Tue Jun 2, 2026 11:30am - 12:30pm (GMT+3) (Lukas Kovalik) - All Hands - Product focus Join with Google Meet - Lets get together to go through the focus -Updated invitation: Lukas/Stefka 121 ® Thu May 28, 2026 2:30pm - 3pm (GMT+3) (Lukas Kovalik) - Lukas/Stefka 121 Join with Google Meet - You have been invited by Stefka Stoyanova to aYour time off request has a response - Your Time Off was Approved Hey Lukas, Your time off request for 0.5 days of PTO has been approved by Stefka Stoyanova. Wed, May 27 0.5 days of PTO :Text message from 087 787 8118 - test 1 On Wed, May 27, 2026 at 10:30 AM Lukas Kovalik [EMAIL]› wrote: response to mobile test text relay On Wed, May 27, 2026 at 10:29 AM -fiiminny/infrastructurel JY-20899: [testl Move apo secrets to AWS Secrets Manager (PR #741) - You can view, comment on, or merce this oull recuest online at: httos://cithub.com/iminlYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 25. Metric Alerts 1 Total Event 1 Alert Recovered [Recovered) Dialers Stats Dialers s(jiminny/infrastructure) Deprecate option "runForSeconds" (PR #740) - Merged #740 into develop. You are receiving this because you are subscribed to this thread.Message ID: ‹jiminnyfinfrastrudLukas Kovalik, here is your weekly update for 26 May - Your weekly updateSpace updatesCheck on 1 work item without updates in the last 28 days.JY-19958 Upgrade BE libraries - MayReview.[Docker) You + Docker = Ready for Action - Hi and welcome to Docker, lukaskovalik! Congratulations, your account has been verified! Sign in to your Docker account to download Docker Desktop,(Docker) Complete your account creation - one-time verification code - Hello lukaskovalik! Thanks for joining Docker. Your verification code is: 03WMT1 Navigate back to your browser and enter th(jiminny/infrastructure) JY-18091 php 8 5 (PR #739) - sonarqubecloud[bot) left a comment (jiminny/infrastructure#739) Quality Gate Passed Quality Gate passed Issues O New issues 0 Accepted i:Youaweck v Diaestttrom Datadoo IneaWee ava dfal faitooa bnccosi atoras taun nva nril atoroscuwna a haton.en er IinI Dfa lavi Too ESIn C ea MFIVA I: NMONECUMOT IEE- N TolEl E aNOniSE. WMer iE: OSROWEROS HINEROWEROGI E DIYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 23. Metric Alerts 1 Total Event 1 Alert Triggered (Triggered) Dialers Stats Dialers MiYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 22. Metric Alerts 1 Total Event 1 Alert Recovered (Recovered) Dialers Stats Dialers NYou're Invited: Al in sales live panel. No hype, just what's working - Out the Al noise: Hear from people doing itYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 21. Metric Alerts 2 Total Events 2 Alerts Recovered [Recovered) Dialers Stats Dialer:We're migrating your account to Atlassian - Atlassian Loom Important changes coming to how you sign in to L0om Learn more * Action needed before your account migration To avoid tempeText message from 07893 937879 - another text relay On Tue, May 26, 2026 at 3:24 PM Lukas Kovalik «[EMAIL]› wrote: new test text rely On Fri, May 22, 2026 at 2:36 PM Lukas Kcfiiminnv/infrastructurel.JY-20591 Add deskton apo :3 bucket (PR #738) - Add cha role to deolov to desktoo s3 bucket Sarve from desktoo s3 bucket. on ano."minnv.com/deskto...
|
NULL
|
-1959555761701427876
|
NULL
|
visual_change
|
ocr
|
NULL
|
rircrox© Pipelines - |Iminnylapp* (JY-20613) Allow rircrox© Pipelines - |Iminnylapp* (JY-20613) Allow owner's role to tAxUemered tines on New codJY-20963 fix deleted object impsm.cwdSycaotionslsmalldcthatteM Inbox (1,733) - lukas.kovalike) xioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform Te8 JiminnySona Subramanian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jy 20910 schedule parallel updateViewhsttonooountrnPotLe.WVindownel:= mail.google.com/mail/u/0/#inbox~ Google GeminiGemini 3.1 Pro ~I'm on page *<tabTitle> Jy 20910 schedule parallel updatetarget processin</tabTitle>* with *«selection>@@-4,7 +4,6@@445namespace TestslUnitlComponentIES;5namespaceTestslUnit|ComponentIES:667-useChaseConey\LaravelDatadogHelper|Datadog:8useHere is a summary of the changes in the provided git diff for UpdateProcessManagerTest.phpStructural and Dependency ChangesReplaced Datadog: Removed the ChaseConey\LaravelDatadogHelper\Datadog)dependency and replaced it with Jiminny\Component\ES\ReindexTargetStatsReporter.Added Constants and Properties: Introduced a new ENVIRONMENT constant (set to"testing' ) and a (SstatsReporter property to hold the mock for the new stats reporter.Processor Instantiation: Updated the getProcessor() method to inject the newSstatsReporter mock into the UpdateProcessManager and utilize the ENVIRONMENTconstant.Test Case ModificationsRemoved Memory Logging Tests: DeletedtestLogMemoryUsageEmitsGaugeWhenLockTsAbsentandtestLogMemoryUsageSkipsGaugeWhenLockIsPresent entirely, as the Redis lock andDatadog gauge logic were removed.Added Empty Selection Test: Introduced testEmptySelectionLogsAndReturnsFalse toverify that processing an empty selection logs a debug message, skips batch manageroperations (generateName, scheduleWork, finishWork ), skips the stats reporter, andcleanly returns false.Updated Existing Tests: Modified testRunUpdate and testRunDoUpdateButThrottled toascort that the SctatcPonartar_sronort/methodic.called.andtoutilize theundatedAsk GeminiYour Jiminny chats aren't used to improve our modeis. Gemini is Al. It can make mistakes, so double check it. Your privacy & GeminSummarize pagesô:ChatM GmailComposelnoosSeteeSnoozedSentDrattCategoriesrurchaseWoreLabelsApp emailsGithubextensionJIRANotesSharedSentryAsk Gmail# Nikolay, sonarqubec. 2|[ # Stefka Stoyanova• * 359877878118, me 4 |[ * Twilio Notifications"Nixolay.sonarouo• * Nikolay .. stefka-j. 7 |# Datadog* Galya Dimitroval# Stefka Stoyanova# BambooHR359877878118, me 3mihailm.. sonaroub.# Datadog# Vasil, sona, Vese. 4# Jira# Docker* Docker*Veselin, sonaraubec. 21Datadog# Datadog• # Datadog# Close Team# Datadog*Loom447893937879, me 4Veselin. sonarcuo."OEMОД* 100% <#a: 8- Thu 28 May 14:13:07*Ljiminny/prophet) Add ai score filter (PR #523) - You can view, comment on, or merge this pull request online at: https//github.com/jiminny/prophet/pull/523 Commit Summary 0918834 Add ai sInvitation: Claude Code Show Case with James @ Mon Jun 1, 2026 2pm - 3pm (GMT+3) (Lukas Kovalik) - Claude Code Show Case with James Join with Google Meet - You have been invitoText message from 087 787 8118 - reply 3 th On Thu, May 28, 2026 at 10:47 AM Lukas Kovalik <[EMAIL]› wrote: reply 2 th On Thu, May 28, 2026 at 10:29 AM <[EMAIL] Twilio subaccount(s) suspended - 1 of your Twilio subaccount(s) have been suspended Your Twilio account Jiminny (Production) (AC8a9a88fe598e06154f5ed1623dbc9071), has 1 Twilimminnw brobherlubdakeREADmEtomaudestobomotnetsenwicemkesNSINUGITONSTPREWSY24EACONCENWNNOVACCAATNEON C TNO T ENDTOCCa GSAPСN ESENEOS E CUEICAEN MEAOSSEKEATИT «XACONTAATfiiminnv/orophetl Uodate Claude workflow to use new disallowedTools format (PR #521) - You can view, comment on. or merae this pull request online at: httos://aithub.com/iminnv/nrorYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 26. Metric Alerts 1 Total Event 1 Alert Recovered [Recovered) Dialers Stats Dialers MeInvitation: All Hands - Product focus @ Tue Jun 2, 2026 11:30am - 12:30pm (GMT+3) (Lukas Kovalik) - All Hands - Product focus Join with Google Meet - Lets get together to go through the focus -Updated invitation: Lukas/Stefka 121 ® Thu May 28, 2026 2:30pm - 3pm (GMT+3) (Lukas Kovalik) - Lukas/Stefka 121 Join with Google Meet - You have been invited by Stefka Stoyanova to aYour time off request has a response - Your Time Off was Approved Hey Lukas, Your time off request for 0.5 days of PTO has been approved by Stefka Stoyanova. Wed, May 27 0.5 days of PTO :Text message from 087 787 8118 - test 1 On Wed, May 27, 2026 at 10:30 AM Lukas Kovalik [EMAIL]› wrote: response to mobile test text relay On Wed, May 27, 2026 at 10:29 AM -fiiminny/infrastructurel JY-20899: [testl Move apo secrets to AWS Secrets Manager (PR #741) - You can view, comment on, or merce this oull recuest online at: httos://cithub.com/iminlYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 25. Metric Alerts 1 Total Event 1 Alert Recovered [Recovered) Dialers Stats Dialers s(jiminny/infrastructure) Deprecate option "runForSeconds" (PR #740) - Merged #740 into develop. You are receiving this because you are subscribed to this thread.Message ID: ‹jiminnyfinfrastrudLukas Kovalik, here is your weekly update for 26 May - Your weekly updateSpace updatesCheck on 1 work item without updates in the last 28 days.JY-19958 Upgrade BE libraries - MayReview.[Docker) You + Docker = Ready for Action - Hi and welcome to Docker, lukaskovalik! Congratulations, your account has been verified! Sign in to your Docker account to download Docker Desktop,(Docker) Complete your account creation - one-time verification code - Hello lukaskovalik! Thanks for joining Docker. Your verification code is: 03WMT1 Navigate back to your browser and enter th(jiminny/infrastructure) JY-18091 php 8 5 (PR #739) - sonarqubecloud[bot) left a comment (jiminny/infrastructure#739) Quality Gate Passed Quality Gate passed Issues O New issues 0 Accepted i:Youaweck v Diaestttrom Datadoo IneaWee ava dfal faitooa bnccosi atoras taun nva nril atoroscuwna a haton.en er IinI Dfa lavi Too ESIn C ea MFIVA I: NMONECUMOT IEE- N TolEl E aNOniSE. WMer iE: OSROWEROS HINEROWEROGI E DIYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 23. Metric Alerts 1 Total Event 1 Alert Triggered (Triggered) Dialers Stats Dialers MiYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 22. Metric Alerts 1 Total Event 1 Alert Recovered (Recovered) Dialers Stats Dialers NYou're Invited: Al in sales live panel. No hype, just what's working - Out the Al noise: Hear from people doing itYour Daily Digest from Datadog - The Daily Digest for Jiminny, Inc. Here's what happened in Datadog on May 21. Metric Alerts 2 Total Events 2 Alerts Recovered [Recovered) Dialers Stats Dialer:We're migrating your account to Atlassian - Atlassian Loom Important changes coming to how you sign in to L0om Learn more * Action needed before your account migration To avoid tempeText message from 07893 937879 - another text relay On Tue, May 26, 2026 at 3:24 PM Lukas Kovalik «[EMAIL]› wrote: new test text rely On Fri, May 22, 2026 at 2:36 PM Lukas Kcfiiminnv/infrastructurel.JY-20591 Add deskton apo :3 bucket (PR #738) - Add cha role to deolov to desktoo s3 bucket Sarve from desktoo s3 bucket. on ano."minnv.com/deskto...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83910
|
2896
|
22
|
2026-05-28T11:13:13.623579+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966793623_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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}]...
|
-3453558879692800268
|
-5448410444951850285
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny...
|
83909
|
NULL
|
NULL
|
NULL
|
|
83911
|
2896
|
23
|
2026-05-28T11:13:16.656757+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966796656_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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":"AXButton","text":"Main menu","depth":5,"bounds":{"left":0.08228058,"top":0.09736632,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"bounds":{"left":0.09823803,"top":0.10694334,"width":0.047539894,"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":"Gemini","depth":13,"bounds":{"left":0.1022274,"top":0.10853951,"width":0.017121011,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"bounds":{"left":0.12084442,"top":0.10853951,"width":0.013796543,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"bounds":{"left":0.35854387,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"bounds":{"left":0.37051198,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-3250347357447468017
|
-3106534794992487197
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83912
|
2896
|
24
|
2026-05-28T11:13:20.314942+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966800314_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-3ef github.com/jiminny/app/pull/12130/changes#diff-3ef9408c34adbd95a81a2025b79e624449cb916a35531b52011db4899e44c4ba...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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}]...
|
4186751725419980495
|
-3106541390988512029
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab...
|
83911
|
NULL
|
NULL
|
NULL
|
|
83913
|
2896
|
25
|
2026-05-28T11:13:23.341906+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966803341_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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}]...
|
-5509476345467854517
|
-5736640825398529341
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83914
|
2895
|
16
|
2026-05-28T11:13:40.148907+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966820148_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
.
Added Constants and Properties:
Introduced a new
ENVIRONMENT
constant (set to
'testing'
) and a...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"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,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"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,"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,"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,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Main menu","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":13,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Gemini said","depth":12,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a summary of the changes in the provided git diff for","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UpdateProcessManagerTest.php","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Structural and Dependency Changes","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Structural and Dependency Changes","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Replaced Datadog:","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Removed the","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ChaseConey\\LaravelDatadogHelper\\Datadog","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dependency and replaced it with","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny\\Component\\ES\\ReindexTargetStatsReporter","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added Constants and Properties:","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introduced a new","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ENVIRONMENT","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"constant (set to","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'testing'","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") and a","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6461361119577137689
|
-3249455883165863804
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
.
Added Constants and Properties:
Introduced a new
ENVIRONMENT
constant (set to
'testing'
) and a...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83915
|
2896
|
26
|
2026-05-28T11:13:53.903426+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966833903_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
535274252879721199
|
-836725049429987085
|
idle
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira...
|
83913
|
NULL
|
NULL
|
NULL
|
|
83916
|
2896
|
27
|
2026-05-28T11:13:55.773887+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966835773_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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":"AXButton","text":"Main menu","depth":5,"bounds":{"left":0.08228058,"top":0.09736632,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"bounds":{"left":0.09823803,"top":0.10694334,"width":0.047539894,"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":"Gemini","depth":13,"bounds":{"left":0.1022274,"top":0.10853951,"width":0.017121011,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"bounds":{"left":0.12084442,"top":0.10853951,"width":0.013796543,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"bounds":{"left":0.35854387,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"bounds":{"left":0.37051198,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":7,"bounds":{"left":0.079288565,"top":0.14445332,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":8,"bounds":{"left":0.079288565,"top":0.14684756,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":13,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":0.09577015},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":15,"bounds":{"left":0.19215426,"top":0.0,"width":0.020279255,"height":0.01715882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.","depth":15,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":1.0},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"bounds":{"left":0.3414229,"top":0.012769354,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":12,"bounds":{"left":0.3307846,"top":0.057462092,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":12,"bounds":{"left":0.34275267,"top":0.057462092,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Gemini said","depth":12,"bounds":{"left":0.10837766,"top":0.08858739,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":13,"bounds":{"left":0.10837766,"top":0.0905826,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a summary of the changes in the provided git diff for","depth":16,"bounds":{"left":0.111369684,"top":0.0905826,"width":0.14876994,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UpdateProcessManagerTest.php","depth":17,"bounds":{"left":0.2621343,"top":0.09217877,"width":0.08377659,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":16,"bounds":{"left":0.34790558,"top":0.0905826,"width":0.0013297872,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Structural and Dependency Changes","depth":15,"bounds":{"left":0.111369684,"top":0.14046289,"width":0.24734043,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Structural and Dependency Changes","depth":16,"bounds":{"left":0.111369684,"top":0.1396648,"width":0.13198139,"height":0.02434158},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Replaced Datadog:","depth":18,"bounds":{"left":0.12450133,"top":0.17677574,"width":0.04870346,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Removed the","depth":18,"bounds":{"left":0.1732048,"top":0.17677574,"width":0.03507314,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ChaseConey\\LaravelDatadogHelper\\Datadog","depth":19,"bounds":{"left":0.21027261,"top":0.1783719,"width":0.11668883,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dependency and replaced it with","depth":18,"bounds":{"left":0.12450133,"top":0.17677574,"width":0.20561835,"height":0.03631285},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny\\Component\\ES\\ReindexTargetStatsReporter","depth":19,"bounds":{"left":0.20844415,"top":0.19752593,"width":0.140625,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":18,"bounds":{"left":0.35106382,"top":0.19592977,"width":0.0013297872,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6187539888047292531
|
-3249455883165863804
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83917
|
2896
|
28
|
2026-05-28T11:13:58.966394+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966838966_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9203726579187570650
|
-6574314066069035822
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
rircroxViewhsttonooountrnPotLe.Windownel:• =github.com/nny/app/pull/12130/changes#diff-2b00cd28a5fb76810e67591689ie42dcae52917d2e00ddddb4e586a4de793cv Gooc e Geminireauots now ownersroe toexUewredtines on New codJY-20963 fix deleted object impsM Inbox (1,733) - lukas.kovalik@jimirioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform Te8 JiminnySona Subramaaian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jy 20910 schedule parallel up: XGemini 3.1 Pro ~Structural and Dependency ChangesReplaced Datadog: Removed the ChaseConey\LaravelDatadogHelper\Datadogdependency ano replacea lewith Jamannynco ponencles tkesndex largecs ca cskeporcer .Added Constants and Properties: Introduced a new ENVIRONMENT constant (set to'testing' ) and a ($statsReporter property to hold the mock for the new stats reporter.Processor Instantlation. Uodated the gecProcessor) metoe to inject the newSstatsReporter mock into the UpdateProcessManager and utilize the ENVIRONMENTCoIStaneTest Case ModificationsRemoved Memory Logging Tests: DeletedtestLogMemoryUsageEmitsGaugeWhenLockIsAbsent andtestLogMemoryUsageSkipsGaugeWhenLockIsPresent entirely, as the Redis lock andDatadog gauge logic were removed.Added Empty Selection Test: Introduced testEmptySelectionLogsAndReturnsFalse tovermy man orocessino an emoly seleccion loos a ceouo messade, sxios oaren mandoenoperations (generateName, schedulework, finishWork ), skips the stats reporter, and"Panlv reuisauserUpdated existing lests: Moditied testRunUpdate and testRunDoUpdatebutthrottled toassert that the ($statsReporter-›report() method is called and to utilize the updatedstatus manager mock.Helper Method RefactoringDynamic Status Manager Assertions: Updated the prepareStatusManager(intSinvokeTimes = 0) method to accept an integer. This allows tests to dynamically assertexactly how many times methods like generateName, setUpdateTarget. schedulehork.and tn cawart are inuakenRemoved Obsolete Helpers: Deleted the (prepareLogger() andsilenceDatadogAndRedisLock() helper methods, replacing their inline functionality withstandard Log: : shouldReceive expectations where needed.Ask GeminilI1 OpenJy 20910 schedule parallel uodate target processing 812130| Vasil-Jiminny wants to merge 65 commits into naster from JY-20910-schedule-parallel-update-target-processingCFilter tec.app/Traits/GracefullyStoppable.php ÷~ & app~ Ei Component/ESEntityTypeReindexer.phpReindexTargetStatsReporter,p...UpdateProcessManager.phpv Console~ # Commands/ElasticsearchAsyncUpdateEsEntities.php•1AsvncUodateSupervisor.ohoDeleteEmailDocumentsCom…ReindexEntityTypes.php•1 RemoveGhostParticinantsCo…ResetAsyncElasticSearchCo...* Kernel. php~ # Contracts/ESStopSignallnterface.php~ Ei TraitsGracefullyStoppable.php~ Ei tests/Unit/Component/ESEntityTypeReindexerTest.phpReindexTargetStatsReporterTes.UpdateProcessManagerTest.phpYour Jiminny chats aren't used to improve our modeis. Gemini is Al. It can make mistakes, so double check it. Your privacy & Geminioethos tnanel),getaypido)public function resume(): voidethne-ochall Pause)Sthis->shallPause = false;sthis-sprintMessagelsprantrlHostnane ts pid ts resumed.'octhosthabelngetaypidd)public function narkReadyToStop(): voidSthis→>readylostop = truespublic function stopSignalReceived(string Smessage ="'): voidTthrs-sseccaceinEyt = tonssaco.95 -it (Sthis->shallStop) ‹Sthis-onariResdvloStoolsleep(10);Summarize page6770717585 Đ868 %OESOMОД* 100% K/2 8 • Thu 28 May 14:13:580 0 /15 viewedAnaiunt approvamit review - SoM Viewedpublic function resune(): void1f (sthis->shallPause) (Sthis->shallPause = false;Sthis->printMessage(sprintf(* --- Process $s RESUMED.*, getaypid())):public function markShallStop(): voidSthiiseoshal Stoo = true:public function markReadyToStop(): voidsthis->readyToStop = true;oublic tunction setMessageinExiti?strina Scessace = null): voidsthis-ynessageOnExit = Smessage;public function stopSignalReceived(Zstring Smessage = null): voidSthis->setMessage0nExit(Saessage);it (Sthis->shallStop) (Sthis->narkReadvloStood...
|
83916
|
NULL
|
NULL
|
NULL
|
|
83918
|
2896
|
29
|
2026-05-28T11:14:02.301535+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966842301_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3403705732781473960
|
-2178800898474990384
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
rircroxViewhsttonooountrnPotLe.Windownel:• =github.com/nny/app/pull/12130/changes#diff-2b00cd28a5fb76810e67591689ie42dcae52917d2e00ddddb4e586a4de793cv Gooc le Geminireavors now ownerstoe tooxUewredtines on New codJY-20963 fix deleted object impsM Inbox (1,733) - lukas.kovalik@jimirioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform Te8 JiminnySona Subramaaian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jy 20910 schedule parallel up: XGemini 3.1 Pro ~Structural and Dependency ChangesReplaced Datadog: Removed the ChaseConey\LaravelDatadogHelper\Datadogdependency ano replacea lewith Jamannynco ponencles tkesndex largecs ca cskeporcer .Added Constants and Properties: Introduced a new ENVIRONMENT constant (set to'testing' ) and a ($statsReporter property to hold the mock for the new stats reporter.Processor Instantlation. Uodated the gecProcessor) metnoe to inject the newSstatsReporter mock into the UpdateProcessManager and utilize the ENVIRONMENTCoIStaneTest Case ModificationsRemoved Memory Logging Tests: DeletedtestLogMemoryUsageEmitsGaugeWhenLockIsAbsent andtestLogMemoryUsageSkipsGaugeWhenLockIsPresent entirely, as the Redis lock andDatadog gauge logic were removed.Added Empty Selection Test: Introduced testEmptySelectionLogsAndReturnsFalse tovermy man orocessino an emoly seleccion loos a ceouo messade, sxios oaren mandoenoperations (generateName, schedulework, finishWork ), skips the stats reporter, and"Panlv reuisauserUpdated existing lests: Moditied testRunUpdate and testRunDoUpdatebutthrottled toassert that the ($statsReporter-›report() method is called and to utilize the updatedstatus manager mock.Helper Method RefactoringDynamic Status Manager Assertions: Updated the prepareStatusManager(intSinvokeTimes = 0) method to accept an integer. This allows tests to dynamically assertexactly how many times methods like generateName, setUpdateTarget. schedulehork.and tn cawart are inuakenRemoved Obsolete Helpers: Deleted the prepareLogger() andsilenceDatadogAndRedisLock() helper methods, replacing their inline functionality withstandard Log: : shouldReceive expectations where needed.Ask GeminilI1 OpenJy 20910 schedule parallel uodate tarcet processing 8121130All commits-| Vasil-Jiminny wants to merge 65 commits into naster from JY-20910-schedule-parallel-update-target-processingCFilter tec.app/Traits/GracefullyStoppable.php ÷~ Б app~ Ei Component/ESEntityTypeReindexer.phpReindexTargetStatsReporter,p...UpdateProcessManager.phpv Console~ # Commands/ElasticsearchAsyncUpdateEsEntities.php•1AsvncUodateSupervisor.ohoDeleteEmailDocumentsCom…ReindexEntityTypes.php•1 RemoveGhostParticipantsCo….ResetAsyncElasticSearchCo...® Kernel.php~ # Contracts/ESStopSignallnterface.php~ Ei TraitsGracefullyStoppable.php~ Ei tests/Unit/Component/ESEntityTypeReindexerTest.phpReindexTargetStatsReporterTes.UpdateProcessManagerTest.phppublic function resume(): voidif (Sthis->shallPause) {Sthis->shallPause = false;Stnis-oortnthessaoelsprintftHoshosoosestesgethostnane(),oetsypidpublic function markReadyToStop(): voidsthis-sreadvtoStoo n truedpublic function stopSignalReceived(string Snessage - 1*): voidSthis->nessaocontxit = spessage:95 -"(Sthis-oshal IStoo) {sthis-snarkReadyToStop()cleeotte-Your Jiminny chats aren't used to improve our modeis. Gemini is Al. It can make mistakes, so double check it. Your privacy & Geminif (Sthis->shallPause) 4SoSeconds = 3688 * 24 * 25scounreSummarize pagedo (78 +71 +76"97 +101+182C< 40M100% KSa: 8- Thu 28 May 14:14:020 0 /15 viewedpublic function resune(): voidAnaiunt approvaif (sthis-»shallPause) (sthis->shallPause = false;ViewedSthis-»printMessage(sprintf(' --- Process $s RESUMED.', getmypid())):public function markShallStop(): voidsthis->shallStop= true;puolie funetion BarkßeadyTostopl): votaSthise>readvToStoo n truedpublic function setMessageOnExit(Zstring Snessage - null): voidSthis-ysessageOnExit = Soessage;public function stopSignalReceived(?string Smessage = null): voidsthis-ssetMessagehnFyit(tmessace)(Sthiseashal lStoo)fSthis-snarkReadyToStop();if (Sthis->shallPause) ‹SmaxSeconds = 3680 * 24 *21scount = 0;do(...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83919
|
2896
|
30
|
2026-05-28T11:14:05.446718+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966845446_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
.
Added Constants and Properties:
Introduced a new
ENVIRONMENT
constant (set to
'testing'
) and a
$statsReporter
property to hold the mock for the new stats reporter.
Processor Instantiation:
Updated the
getProcessor()
method to inject the new
$statsReporter
mock into the
UpdateProcessManager
and utilize the
ENVIRONMENT
constant.
Test Case Modifications
Test Case Modifications
Removed Memory Logging Tests:
Deleted
testLogMemoryUsageEmitsGaugeWhenLockIsAbsent
and
testLogMemoryUsageSkipsGaugeWhenLockIsPresent
entirely, as the Redis lock and Datadog gauge logic were removed.
Added Empty Selection Test:
Introduced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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":"AXButton","text":"Main menu","depth":5,"bounds":{"left":0.08228058,"top":0.09736632,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"bounds":{"left":0.09823803,"top":0.10694334,"width":0.047539894,"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":"Gemini","depth":13,"bounds":{"left":0.1022274,"top":0.10853951,"width":0.017121011,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"bounds":{"left":0.12084442,"top":0.10853951,"width":0.013796543,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"bounds":{"left":0.35854387,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"bounds":{"left":0.37051198,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":7,"bounds":{"left":0.079288565,"top":0.14445332,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":8,"bounds":{"left":0.079288565,"top":0.14684756,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":13,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":0.09577015},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":15,"bounds":{"left":0.19215426,"top":0.0,"width":0.020279255,"height":0.01715882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.","depth":15,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":1.0},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"bounds":{"left":0.3414229,"top":0.012769354,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":12,"bounds":{"left":0.3307846,"top":0.057462092,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":12,"bounds":{"left":0.34275267,"top":0.057462092,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Gemini said","depth":12,"bounds":{"left":0.10837766,"top":0.08858739,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":13,"bounds":{"left":0.10837766,"top":0.0905826,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a summary of the changes in the provided git diff for","depth":16,"bounds":{"left":0.111369684,"top":0.0905826,"width":0.14876994,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UpdateProcessManagerTest.php","depth":17,"bounds":{"left":0.2621343,"top":0.09217877,"width":0.08377659,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":16,"bounds":{"left":0.34790558,"top":0.0905826,"width":0.0013297872,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Structural and Dependency Changes","depth":15,"bounds":{"left":0.111369684,"top":0.14046289,"width":0.24734043,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Structural and Dependency Changes","depth":16,"bounds":{"left":0.111369684,"top":0.1396648,"width":0.13198139,"height":0.02434158},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Replaced Datadog:","depth":18,"bounds":{"left":0.12450133,"top":0.17677574,"width":0.04870346,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Removed the","depth":18,"bounds":{"left":0.1732048,"top":0.17677574,"width":0.03507314,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ChaseConey\\LaravelDatadogHelper\\Datadog","depth":19,"bounds":{"left":0.21027261,"top":0.1783719,"width":0.11668883,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dependency and replaced it with","depth":18,"bounds":{"left":0.12450133,"top":0.17677574,"width":0.20561835,"height":0.03631285},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny\\Component\\ES\\ReindexTargetStatsReporter","depth":19,"bounds":{"left":0.20844415,"top":0.19752593,"width":0.140625,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":18,"bounds":{"left":0.35106382,"top":0.19592977,"width":0.0013297872,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added Constants and Properties:","depth":18,"bounds":{"left":0.12450133,"top":0.22466081,"width":0.08510638,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introduced a new","depth":18,"bounds":{"left":0.2096077,"top":0.22466081,"width":0.045545213,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ENVIRONMENT","depth":19,"bounds":{"left":0.2571476,"top":0.22625698,"width":0.032912236,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"constant (set to","depth":18,"bounds":{"left":0.29205453,"top":0.22466081,"width":0.04138963,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'testing'","depth":19,"bounds":{"left":0.12649602,"top":0.24541101,"width":0.026928192,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") and a","depth":18,"bounds":{"left":0.15541889,"top":0.24381484,"width":0.017785905,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$statsReporter","depth":19,"bounds":{"left":0.17519946,"top":0.24541101,"width":0.041888297,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"property to hold the mock for the new stats reporter.","depth":18,"bounds":{"left":0.21908244,"top":0.24381484,"width":0.13098404,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processor Instantiation:","depth":18,"bounds":{"left":0.12450133,"top":0.2725459,"width":0.061170213,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Updated the","depth":18,"bounds":{"left":0.18567154,"top":0.2725459,"width":0.03307846,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getProcessor()","depth":19,"bounds":{"left":0.22074468,"top":0.27414206,"width":0.041888297,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"method to inject the new","depth":18,"bounds":{"left":0.26462767,"top":0.2725459,"width":0.06416223,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$statsReporter","depth":19,"bounds":{"left":0.12649602,"top":0.2932961,"width":0.041888297,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"mock into the","depth":18,"bounds":{"left":0.17037898,"top":0.29169992,"width":0.036402926,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UpdateProcessManager","depth":19,"bounds":{"left":0.2087766,"top":0.2932961,"width":0.059840426,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and utilize the","depth":18,"bounds":{"left":0.2706117,"top":0.29169992,"width":0.03673537,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ENVIRONMENT","depth":19,"bounds":{"left":0.30934176,"top":0.2932961,"width":0.032912236,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"constant.","depth":18,"bounds":{"left":0.12450133,"top":0.29169992,"width":0.2209109,"height":0.03631285},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Test Case Modifications","depth":15,"bounds":{"left":0.111369684,"top":0.36073422,"width":0.24734043,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Test Case Modifications","depth":16,"bounds":{"left":0.111369684,"top":0.35993615,"width":0.085605055,"height":0.02434158},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Removed Memory Logging Tests:","depth":18,"bounds":{"left":0.12450133,"top":0.39704707,"width":0.08494016,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deleted","depth":18,"bounds":{"left":0.20944148,"top":0.39704707,"width":0.022107713,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"testLogMemoryUsageEmitsGaugeWhenLockIsAbsent","depth":19,"bounds":{"left":0.12649602,"top":0.4177973,"width":0.13164894,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":18,"bounds":{"left":0.2601396,"top":0.4162011,"width":0.011801862,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"testLogMemoryUsageSkipsGaugeWhenLockIsPresent","depth":19,"bounds":{"left":0.12649602,"top":0.4369513,"width":0.13464096,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"entirely, as the Redis lock and Datadog gauge logic were removed.","depth":18,"bounds":{"left":0.12450133,"top":0.43535516,"width":0.2130984,"height":0.03631285},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added Empty Selection Test:","depth":18,"bounds":{"left":0.12450133,"top":0.48324022,"width":0.07330452,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introduced","depth":18,"bounds":{"left":0.19780585,"top":0.48324022,"width":0.029753989,"height":0.01715882},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-4145842064062974214
|
-3249983648747196284
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
.
Added Constants and Properties:
Introduced a new
ENVIRONMENT
constant (set to
'testing'
) and a
$statsReporter
property to hold the mock for the new stats reporter.
Processor Instantiation:
Updated the
getProcessor()
method to inject the new
$statsReporter
mock into the
UpdateProcessManager
and utilize the
ENVIRONMENT
constant.
Test Case Modifications
Test Case Modifications
Removed Memory Logging Tests:
Deleted
testLogMemoryUsageEmitsGaugeWhenLockIsAbsent
and
testLogMemoryUsageSkipsGaugeWhenLockIsPresent
entirely, as the Redis lock and Datadog gauge logic were removed.
Added Empty Selection Test:
Introduced...
|
83918
|
NULL
|
NULL
|
NULL
|
|
83920
|
2895
|
17
|
2026-05-28T11:14:10.625436+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966850625_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-3453558879692800268
|
-5448410444951850285
|
idle
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny...
|
83914
|
NULL
|
NULL
|
NULL
|
|
83921
|
2896
|
31
|
2026-05-28T11:14:11.792481+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966851792_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-2b0 github.com/jiminny/app/pull/12130/changes#diff-2b00cd28a5fb76810e6759f6899e5e42dcae52917d2e00ddddb4e586a4de793c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
2851836541743944314
|
7224978872138212579
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
rircroxViewhsttonooountrnPotLe.Windownel:• =github.com/nny/app/pull/12130/changes#diff-2b00cd28a5fb76810e67591689ie42dcae52917d2e00ddddb4e586a4de793cv Gooc e Geminireauots now ownersroe toexUewredtines on New codJY-20963 fix deleted object impsM Inbox (1,733) - lukas.kovalik@jimirioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform Te8 JiminnySona Subramaaian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jy 20910 schedule parallel up: XGemini 3.1 Pro ~Structural and Dependency ChangesReplaced Datadog: Removed the ChaseConey\LaravelDatadogHelper\Datadogdependency ano replacea lewith Jamannynco ponencles tkesndex largecs ca cskeporcer .Added Constants and Properties: Introduced a new ENVIRONMENT constant (set to'testing' ) and a ($statsReporter property to hold the mock for the new stats reporter.Processor Instantlation. Uodated the gecProcessor) metnoe to inject the newSstatsReporter mock into the UpdateProcessManager and utilize the ENVIRONMENTCoIStaneTest Case ModificationsRemoved Memory Logging Tests: DeletedtestLogMemoryUsageEmitsGaugeWhenLockIsAbsent andtestLogMemoryUsageSkipsGaugeWhenLockIsPresent entirely, as the Redis lock andDatadog gauge logic were removed.Added Empty Selection Test: Introduced testEmptySelectionLogsAndReturnsFalse tovermy man orocessino an emoly seleccion loos a ceouo messade, sxios oaren mandoenoperations (generateName, schedulework, finishWork ), skips the stats reporter, and"Panlv reuisauserUpdated existing lests: Moditied testRunUpdate and testRunDoUpdatebutthrottled toassert that the ($statsReporter-›report() method is called and to utilize the updatedstatus manager mock.Helper Method RefactoringDynamic Status Manager Assertions: Updated the prepareStatusManager(intSinvokeTimes = 0) method to accept an integer. This allows tests to dynamically assertexactly how many times methods like generateName, setUpdateTarget. schedulehork.and tn cawart are inuakenRemoved Obsolete Helpers: Deleted the prepareLogger() andsilenceDatadogAndRedisLock() helper methods, replacing their inline functionality withstandard Log: : shouldReceive expectations where needed.Ask GeminilI1 OpenJy 20910 schedule parallel uodate tarcet processing 8121130All commits -Vasil-Jiminny wants to merge 65 commits into naster from JY-20910-schedule-parallel-update-target-processing dCFilter tec.~ & app~ fi Component/ESEntityTypeReindexer.phpReindexTargetStatsReporter,p...UpdateProcessManager.phpv Consolev # Commands/ElasticsearchAsyncUpdateEsEntities.php•1AsvncUodateSupervisor.ohoDeleteEmailDocumentsCom..ReindexEntityTypes.php•1 RemoveGhostParticipantsCo.….ResetAsyncElasticSearchCo...Đ Kernel.php~ # Contracts/ESStopSignallnterface.phpv Ei Traits2 GracefullvStonoable.oho~ Ei tests/Unit/Component/ESEntityTypeReindexerTest.phpReindexTargetStatsReporterTes…UpdateProcessManagerTest.phpYour Jiminny chats aren't used to improve our modeis. Gemini is Al. It can make mistakes, so double check it. Your privacy & GeminSummarize pageapp/Traits/GracefullyStoppable.php ÷103stccola),Scount++;) while (Sthis->shallPause || Scount === SnaxSeconds);tiscount sas s-oxSeconds105sthis->orantessagelSorintt"Process is on ts will be terminated. Pause timeout reached. .ocumypaoloethostnarel1 do not resuse at cancoudieo):114public function printMessage(string Smessage): void… eohse tnetanrent CameandldSthis-yarn(ssessage:y else (23124logger-owarning(Snessaoc)v tests/Unit/Component/ES/EntityTypeReindexerTest.php C00 -0,0 +1,124 g163104105 + GESOMO100% KSa: 8- Thu 28 May 14:14:110 0 /15 viewedAnaiunt approva+44 -43 8800Viewedslcep(1);scount++;Scount?e smaxSecondssthis->printMessagetsorintt'==- Process is wili be terminated, Pause tineoutreached.', getaypidodo not resunettmeoudie();i1 shalilPause value nay be sitered vith an external signal.} white (Sthis->shallPause);public function printMessage(string Stessage): voidLog: :warning (Snessage);if (Sthis instanceof Comnand) (Sthis-ywarn Sessace)+124 BBane Viewed@ ..+ <7php+ declare(strict_types=1);+ namespace Tests\Unit\ComponentVES;+ use Jiminny\Component\ES\EntityTypeReindexer:+ use Jiminny\Component\ES\UpdateProcessManager:+ use Jiminny\Contracts\ES\StopSignalInterface:* use PHPUnit\Franework\Attributes\CoversClass;+ use PHPUnit\Framework\MockObject\MockObject;* use PHPUnit\Franework\TestCase;...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83922
|
2896
|
32
|
2026-05-28T11:14:14.694661+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966854694_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-18f github.com/jiminny/app/pull/12130/changes#diff-18f447bb2f1e7d5e4ea030fc663962e02039ed0b554563d969c4398d8b3d427e...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
4076172443549847402
|
-5709619777657511209
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app...
|
83921
|
NULL
|
NULL
|
NULL
|
|
83923
|
2895
|
18
|
2026-05-28T11:14:12.018537+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966852018_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-18f github.com/jiminny/app/pull/12130/changes#diff-18f447bb2f1e7d5e4ea030fc663962e02039ed0b554563d969c4398d8b3d427e...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4005828102058786328
|
-7727228562094562093
|
click
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
SlackFileEditViewGoHistoryWindowHelpDOCKERDOCKER (-zsh)2c55fe91ca4148a230e32eadocker_lamp_12026] No failed transcriptidocker_lamp_18? Stadocker_lamp_1205 Ddocker_lamp_1roc/1/fd/1'2>&1docker_lamp_12026ONEdocker_lamp_1 |Gracefully Stopping...Container docker-blackfContainer docker-mariadContainer kibanaStoppiContainer docker_lamp_1Container docker-jiminnContainer ngrok StoppinContainer docker-datadoContainer docker-datadoContainer docker-blackfContainer kibana StoppeContainer elasticsearchContainer docker-jiminnContainer elasticsearchmariadb-11 2026-0ownngrokt=2026pReq="{err: ‹nil>restarmariadb-12026-0ngrokt=2026on err=nilngrokt=2026f0743derr="reconnectinContainer docker_lamp_1Container ngrokError EContainer docker-mariadunexpected EOFerror during connect: Painers/ala97af7b5a28480What's next:Debug this Composelukas@Lukas-Kovaliks-MaV ALL VAULTS8My vaultExported%8All items* FavouritesBinV TYPESLoginCardIdentitySecure noteSSH keyFOLDERS+2FACSV Import 28.01.22LastPass Import 1.11.21NAS UsersSalesloftStarter KitNo folderCOLLECTIONSPersonal collectionMy vaultSendQ [URL_WITH_CREDENTIALS] mJ2STigExRjaUT^BoFy8NFEDOhttps://blog.whitelabeltechnologies....J2STigExRjaUT^BoFy8NFEDOhttps://www.rescuetime.com/log...XDLHx3m/Vangseyhttps://www.rescuetime.com/login?https://www.outsourcely.com/log..mLkl1230Shttps://www.outsourcely.com/login/Lkl1230Shttps://www.martinus.sk/login/?r..mLkl123Mhttps://www.martinus.sk/login/?redi..Lk/123Mhttps://www.jefit.com/login/m141122+HomeDMsActivityFilesLaterMore+ED→Jiminny ...# engineering# general# happy_birthday& infosec_internal_all# infra-changes#infrastructure_dev# jbu-team-info# jiminny-bg# platform-team# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi...° Direct messagesEo Vasil Vasilev •o Stoyan TomovLo lliyana Netseva&. Petko Kashinski®. Galya Dimitrovaa. Stefka Stoyanova* Todor Stamatov&. Steliyan Georgieve Ves%. Mira100% C8• Thu 28 May 14:14:11Describe what you are looking for# engineering8 246 0• MessagesF CanvasC FilesMore v+ledicated Host in AWS ConsoleFriday, May 22ndYes, that's expected behavicr with EC2 Mac Dedicated Hosts, and it's one of the most important"gotchas" in AWS Mac.What happenedTouteterro acitiohWe mehnenhThat reservation is now tied to your accourtAWS enforces a minimum allocation period (typically 24 hours)|3 replies Last reply 6 days agoSaturday, May 23rd ~Ves 5:46 PMHey team,PHP 8.5 release is live. After the holidays fetch thelatest dev docker image to make sure you have the8.5.5 runtime locally.HHH6Today ~Vasil Vasilev ®l 2:07 PMAction failed with error: SDK executionerror: Error: Claude Code returned an errorresult: API Error: 400 You have reached yourspecified API usage limits. You will regainaccess on 2026-06-01 at 00:00 UTC.I exhausted up all review tokensMessage #engineering...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83924
|
2895
|
19
|
2026-05-28T11:14:17.920419+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966857920_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-18f github.com/jiminny/app/pull/12130/changes#diff-18f447bb2f1e7d5e4ea030fc663962e02039ed0b554563d969c4398d8b3d427e...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
.
Added Constants and Properties:
Introduced a new...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login | Salesforce","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"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,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"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,"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,"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,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Main menu","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":13,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Gemini said","depth":12,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a summary of the changes in the provided git diff for","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UpdateProcessManagerTest.php","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Structural and Dependency Changes","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Structural and Dependency Changes","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Replaced Datadog:","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Removed the","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ChaseConey\\LaravelDatadogHelper\\Datadog","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dependency and replaced it with","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny\\Component\\ES\\ReindexTargetStatsReporter","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added Constants and Properties:","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introduced a new","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5724585950325069565
|
-3249455883165863804
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt
Edit
Gemini said
Gemini said
Here is a summary of the changes in the provided git diff for
UpdateProcessManagerTest.php
:
Structural and Dependency Changes
Structural and Dependency Changes
Replaced Datadog:
Removed the
ChaseConey\LaravelDatadogHelper\Datadog
dependency and replaced it with
Jiminny\Component\ES\ReindexTargetStatsReporter
.
Added Constants and Properties:
Introduced a new...
|
83923
|
NULL
|
NULL
|
NULL
|
|
83925
|
2896
|
33
|
2026-05-28T11:14:18.027608+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966858027_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-18f github.com/jiminny/app/pull/12130/changes#diff-18f447bb2f1e7d5e4ea030fc663962e02039ed0b554563d969c4398d8b3d427e...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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":"AXButton","text":"Main menu","depth":5,"bounds":{"left":0.08228058,"top":0.09736632,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"bounds":{"left":0.09823803,"top":0.10694334,"width":0.047539894,"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":"Gemini","depth":13,"bounds":{"left":0.1022274,"top":0.10853951,"width":0.017121011,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"bounds":{"left":0.12084442,"top":0.10853951,"width":0.013796543,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"bounds":{"left":0.35854387,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"bounds":{"left":0.37051198,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":7,"bounds":{"left":0.079288565,"top":0.14445332,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":8,"bounds":{"left":0.079288565,"top":0.14684756,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":13,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":0.09577015},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":15,"bounds":{"left":0.19215426,"top":0.0,"width":0.020279255,"height":0.01715882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.","depth":15,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":1.0},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2841637628066877512
|
-3403141220450930556
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83926
|
2896
|
34
|
2026-05-28T11:14:20.488716+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966860488_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-3e9 github.com/jiminny/app/pull/12130/changes#diff-3e91b9df26f6ed49ead694c97ddcddf5f3c3e878390064d0b8849f22d54e5603...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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}]...
|
426904441491657512
|
-3105408620207737629
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close...
|
83925
|
NULL
|
NULL
|
NULL
|
|
83927
|
2895
|
20
|
2026-05-28T11:14:20.592660+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966860592_m1.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-3e9 github.com/jiminny/app/pull/12130/changes#diff-3e91b9df26f6ed49ead694c97ddcddf5f3c3e878390064d0b8849f22d54e5603...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"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,"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,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3604931495678506290
|
-9168450811530189609
|
click
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83928
|
2896
|
35
|
2026-05-28T11:14:21.541977+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966861541_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-3e9 github.com/jiminny/app/pull/12130/changes#diff-3e91b9df26f6ed49ead694c97ddcddf5f3c3e878390064d0b8849f22d54e5603...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4005828102058786328
|
-7727228562094562093
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
JY-20963 fix deleted object import by LakyLak · Pull Request #12121 · jiminny/app
rircroxViewhsttonooountrnroie.Windownel:• =github.com/myaoo oulzlou crinetorolieoeslav Gooc e Geminireauots now ownersroe toexUewredtines on New codJY-20963 fix deleted object impM Inbox (1,733) - lukas.kovaliklimlioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform Te8 JiminnySona Strbramaal an at 27/05/2021aIliyana Netseva at 27/05/2026, 1€) Jy 20910 schedule parallel upc XGemini 3.1 Pro ~ouucturdi dne vepenaency cnianeesReplaced Datadoq: Removed the ChaseConey LaravelDatadogHelper Datadogdependency ano replacea lewith Jamannyco ponencles tkesndexlargecscacskeporter,Added Constants and Properties: Introduced a new ENVERONMENT constant (set to"testing" )anda SstatsRenorter property to hold the mock for the new stats reporter.Processor Instantlation. Uodated the gecProcessor) metnoe to inject the newSstatsReporter mock intothe UpdateProcessManaser and utilize the ENVIRONMENTCoIStaneTest Case ModificationsRemoved Memory Logging Tests: DeletedtestLodvemorvlsadesm tscaudewhenLocka stosent anotestLogMemoryUsageSkipsGaugeWhenLockIsPresent entirely. as the Redis lock andDatadog gauge logic were removed.Added Empty Selection Test: Introduced testEmptySelectionLogsAndReturnsFalse tovermy man orocessino an emoly seleccion loos a deouo messade, sxios oaren mandoenoperationsgenerateName, scheduleWork. finishnork, skips the stats reporter, and"Panlv reuisauserUpdated existing lests:Moditied testRunUpdate and testRunDoUpdatebutthrottled toassert that the SstatsReporter-›reporto method is called and to utilize the updatedstatus manager mock.Helper Method RefactoringDynamic Status Manager Assertions: Uodated the prepareStatusManagerGintSinvokeTimes = 0) method to accept an integer. This allows tests to dynamically assertexactly how many times methods like generateName. setUpdateTarget . schedulehork .and tn cawart are inuakenRemoved Obsolete Helpers: Deleted the prepareLogger ancsilenceDatadodAndRedi.sl.ock(helner methade. renlacina their inline functionalitv withstandard Lod::shouldReceive expectations where neededelcomintYour lim nou chate trhn" uend to imnroy our moddle Camioiie 4l1t cao mata mtake co donbls chack " Yoir oracy & CaminSummarize pagesô:dcddf513c3e878390064d0b8849122d54e5603I1 OpenJy 20910 schedule parallel uodate tarcet processing 8121130All commits - Vasil-Jiminny wants to merge 65 commits into master from JY-20910-schedule-parallel-update-target-processingCFilter tec.v=100v = Component/ESEntityTypeReindexer.phpReindexTargetStatsReporter.p3) UodateProcessManager.phpv Consolev = Commands/Elasticsearch• AsyncUpdateEsEntities.php•1AsvncUodateSupervisor.oho- DeleteEmailDocumentsCom…•)ReindexEntityTypes.php•1 RemoveGhostParticipantsCo.….8 ResetAsyncElasticSearchCo..2 Kernel.phpv = Contracts/29StopSignalinterface.phpv E TraitsP GracefullvStonoable.oho= tests/Unit/Component/ES•) EntityTvpeReindexerTest.ohp•) ReindexTargetStatsReporterTes…8 UpdateProcessManagerTest.phpapp/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php L *app/Console/Kernel.php dee -44,8 +44,6 €luse Jiminny console comands DeleteoldazcraNotescommanduse Jiminny\ConsolelConnands\DeleteS3LeftoversCommand;usemy console Colcanos thar pevtanvarelcoanclochotcaeoncochandr- use Jiminny\Console\Connalnds\Elasticsearch\DeleteEma1lDocumentsCommand=- use J1minny Console Comands Elasticsearch RemoveghostPart 1c1pantscommand=use Jiminny\ConsolelComnands\FlushRolesPermissionsCache:use Jiminny Console\Concands\GenerateinternaLnebhookToken;use Jiminny\ConsolelConnands\IssucMcpTokenConmand;00 -251,7 +249,8 ge class Kernel extends ConsoleKernelCommands\Activities|SetupIntegration\ConnectAndSell::class.252Connands\Activities|SetupIntegration\CloudTalk::class,253Lomands lusers\Createconterencesluos:class,254-Commands\Elasticsearch\AsyncUpdateEsEntities::class,259Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,Commands\Playlists|PlaylistSharesUpdateCommand::class,Commandel Crni Auto looDe lavedCommand::class.0a -333,7 +332,6 @e class Kernel extends ConsoleKernelCommands\Dev\FixMissMatchedCrmActivitiesCommand::class.Nowmloacysctoolitac/doseand..class.Actzvitzeshatchcracommand::class,336DeleteEna:lDocunentsCorcand:.class.Nelereololtanser Tortonscocanortcrassneletetui ettovarel oscand.cclace.l339krsowcuctctoracrLowho..crassee -356,7 +354,6 ee Class Kernel extends ConsoleKernelHubspotJournalPolLingcommand::class,SetupJournalDealWebhookSubscriptionsCommand::class,List.JournalWebhookSubscriotionsCommand::classRenoveGhostParticipantsCommand::class,Autoociccthtaco.warylyocLowand..clossConcandel ari loohct twit teccosnand:eclass.Conmands\CraVatchOpportunityActivitiesCommand::class,aoo/Contracts/ES/StooSionalInterface.phoapp/Traits/GracefullvStooosble.ohg0 *35d• 1/15 viewedAnaiunt approvInu cowoy 14.14.2ViewedEViewed+5 -1 8888+7-08000use Janinny.console\commandsDeleteolda1craNotescoonandsuse Jiminny\Console\Conmands\DeleteS3LeftoversCommand;use mnny Console Lomands Uharzertan Vare Ctondochecanonlotmanduse Jiminny\Console\Cormands\FlushRolesPermissionsCachesuse Janinny.console\Lomands\generateinternalnebhooklokenuse Jiminny\Console\Cormands\IssueMcpTokenCommandComands Activ1ties Setupintcaration connectAndsell::classCommands\Activities\SetupIntegration|CloudTalk::class,Lomands\Usersicreateconterencesluos:classnCommands\Elasticsearch\ReindexEntitylypes::class,oranos clasycscarchasyncucodrcoboctwsort.ctassnCommands\Elasticsearch\ResetAsyncElasticSearchComand::class,Comands Playlists Playl1stSharesUpdatecomand::class.Cormands\Crn\AutologDelayedComnand::class,Loranos oevr.xhssherchootttacdwocston..cussanownloar'.ssincTrackcoreanc..class.ActivitiesMatchCrmCommand: :classveleredlolranscr toconscocnancttcrassdnelatac2i attoverei osmand..clace.kosovobelcrorarkerscomano..coosgHubspotJournalPoLL1ngCommand::classSetuoJlournalDealWebhookSubscriotionsCommand..classList.JournalWebhookSubscriotionsCommand::class.AutoocrectAlAcou.cylyocLosano..chorgCommands\Crn\LogActivitiesCommand::class,Cormands\Crn\MatchOpportunityActivitiesComnand::class.14n sesseViewedM Viewel...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
83929
|
2896
|
36
|
2026-05-28T11:14:28.142892+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-28/1779 /Users/lukas/.screenpipe/data/data/2026-05-28/1779966868142_m2.jpg...
|
Firefox
|
Jy 20910 schedule parallel update target processin Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/12130/changes#diff-3e9 github.com/jiminny/app/pull/12130/changes#diff-3e91b9df26f6ed49ead694c97ddcddf5f3c3e878390064d0b8849f22d54e5603...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.09497207,"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.10614525,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"BE upgrade libraries","depth":4,"bounds":{"left":0.0028257978,"top":0.13288109,"width":0.03939495,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":4,"bounds":{"left":0.0,"top":0.15203512,"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-20613] Allow owner's role to be selected when setting up a trial - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.1632083,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Text relay","depth":4,"bounds":{"left":0.0028257978,"top":0.18994413,"width":0.020279255,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Deleted object error","depth":4,"bounds":{"left":0.0028257978,"top":0.21428572,"width":0.039228722,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.0028257978,"top":0.23782921,"width":0.07679521,"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":"Uncovered Lines on New Code - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.015957447,"top":0.2490024,"width":0.11402926,"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.0028257978,"top":0.27055067,"width":0.07679521,"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.015957447,"top":0.28172386,"width":0.14245346,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login | Salesforce","depth":4,"bounds":{"left":0.0,"top":0.30327216,"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":"Login | Salesforce","depth":5,"bounds":{"left":0.013297873,"top":0.31444532,"width":0.030917553,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.33599362,"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\\Exceptions\\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.3471668,"width":0.24301861,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.36871508,"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":"Inbox (1,733) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.37988827,"width":0.09740692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20979] Resolve PHP 8.5.5 deprications - Jira","depth":4,"bounds":{"left":0.0,"top":0.40143654,"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-20979] Resolve PHP 8.5.5 deprications - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.41260973,"width":0.08543883,"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.43415803,"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.44533122,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.4668795,"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 5 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.47805268,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"transcript ss issue","depth":4,"bounds":{"left":0.0028257978,"top":0.5047885,"width":0.036070477,"height":0.01915403},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0028257978,"top":0.528332,"width":0.07679521,"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.015957447,"top":0.5395052,"width":0.013297873,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":4,"bounds":{"left":0.0028257978,"top":0.56105345,"width":0.07679521,"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":"[SRD-6881] [On demand] Transcription in saved search disappears - Jira","depth":5,"bounds":{"left":0.015957447,"top":0.57222664,"width":0.1271609,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.5937749,"width":0.07679521,"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":"Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.6049481,"width":0.12799202,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":4,"bounds":{"left":0.0028257978,"top":0.62649643,"width":0.07679521,"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":"Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket","depth":5,"bounds":{"left":0.015957447,"top":0.63766956,"width":0.12134308,"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.6592179,"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.6703911,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.69193935,"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":"Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.70311254,"width":0.18201463,"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.69912213,"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":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.72625697,"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":"Close 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":"AXButton","text":"AI Chat settings","depth":3,"bounds":{"left":0.35854387,"top":0.055067837,"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,"is_expanded":false},{"role":"AXButton","text":"Close","depth":3,"bounds":{"left":0.37051198,"top":0.055067837,"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":"AXButton","text":"Main menu","depth":5,"bounds":{"left":0.08228058,"top":0.09736632,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open mode picker, currently 3.1 Pro","depth":6,"bounds":{"left":0.09823803,"top":0.10694334,"width":0.047539894,"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":"Gemini","depth":13,"bounds":{"left":0.1022274,"top":0.10853951,"width":0.017121011,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.1 Pro","depth":11,"bounds":{"left":0.12084442,"top":0.10853951,"width":0.013796543,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Chat","depth":5,"bounds":{"left":0.35854387,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":5,"bounds":{"left":0.37051198,"top":0.10215483,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":7,"bounds":{"left":0.079288565,"top":0.14445332,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":8,"bounds":{"left":0.079288565,"top":0.14684756,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":13,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":0.09577015},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":15,"bounds":{"left":0.19215426,"top":0.0,"width":0.020279255,"height":0.01715882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\\Unit\\Component\\ES;5namespace Tests\\Unit\\Component\\ES;667-use ChaseConey\\LaravelDatadogHelper\\Datadog;8use Elastica\\Index;7use Elastica\\Index;9use Illuminate\\Support\\Facades\\App;8use Illuminate\\Support\\Facades\\App;10use Illuminate\\Support\\Facades\\Log;9use Illuminate\\Support\\Facades\\Log;@@ -20,6 +19,7 @@20use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;19use Jiminny\\Component\\ES\\Processor\\TargetEntitiesSelector;21use Jiminny\\Component\\ES\\Processor\\UpdateTarget;20use Jiminny\\Component\\ES\\Processor\\UpdateTarget;22use Jiminny\\Component\\ES\\QueuePriorityEnum;21use Jiminny\\Component\\ES\\QueuePriorityEnum;22+use Jiminny\\Component\\ES\\ReindexTargetStatsReporter;23use Jiminny\\Component\\ES\\UpdateProcessManager;23use Jiminny\\Component\\ES\\UpdateProcessManager;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;24use Jiminny\\Contracts\\ES\\UpdateTargetEnum;25use PHPUnit\\Framework\\Attributes\\CoversClass;25use PHPUnit\\Framework\\Attributes\\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \\Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.","depth":15,"bounds":{"left":0.2017952,"top":0.0,"width":0.15026596,"height":1.0},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"bounds":{"left":0.3414229,"top":0.012769354,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":12,"bounds":{"left":0.3307846,"top":0.057462092,"width":0.011968086,"height":0.028731046},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-6646324126617851072
|
-3259026032374026108
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 5 Q2 - Platform Team - Scrum Board Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
BE upgrade libraries
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
[JY-20613] Allow owner's role to be selected when setting up a trial - Jira
Text relay
Deleted object error
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
Uncovered Lines on New Code - app in Jiminny SonarQube Cloud
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
Login | Salesforce
Login | Salesforce
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Jiminny\Exceptions\EmailActivityImportException: [Email Import] Failed for InboxEmail ID: 125695762: Error: Request failed — jiminny — app
Inbox (1,733) - [EMAIL] - Jiminny Mail
Inbox (1,733) - [EMAIL] - Jiminny Mail
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
[JY-20979] Resolve PHP 8.5.5 deprications - Jira
Jiminny
Jiminny
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 5 Q2 - Platform Team - Scrum Board - Jira
transcript ss issue
Jiminny
Jiminny
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
[SRD-6881] [On demand] Transcription in saved search disappears - Jira
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Sona Subramanian at 27/05/2026, 17:46:08 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Iliyana Netseva at 27/05/2026, 18:48:18 - Session Replay - LogRocket
Jiminny
Jiminny
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Jy 20910 schedule parallel update target processing by Vasil-Jiminny · Pull Request #12130 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
Main menu
Open mode picker, currently 3.1 Pro
Gemini
3.1 Pro
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
You said I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected. Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
You said
I’m on page “<tabTitle>Jy 20910 schedule parallel update target processin</tabTitle>” with “<selection>@@ -4,7 +4,6 @@445namespace Tests\Unit\Component\ES;5namespace Tests\Unit\Component\ES;667-use ChaseConey\LaravelDatadogHelper\Datadog;8use Elastica\Index;7use Elastica\Index;9use Illuminate\Support\Facades\App;8use Illuminate\Support\Facades\App;10use Illuminate\Support\Facades\Log;9use Illuminate\Support\Facades\Log;@@ -20,6 +19,7 @@20use Jiminny\Component\ES\Processor\TargetEntitiesSelector;19use Jiminny\Component\ES\Processor\TargetEntitiesSelector;21use Jiminny\Component\ES\Processor\UpdateTarget;20use Jiminny\Component\ES\Processor\UpdateTarget;22use Jiminny\Component\ES\QueuePriorityEnum;21use Jiminny\Component\ES\QueuePriorityEnum;22+use Jiminny\Component\ES\ReindexTargetStatsReporter;23use Jiminny\Component\ES\UpdateProcessManager;23use Jiminny\Component\ES\UpdateProcessManager;24use Jiminny\Contracts\ES\UpdateTargetEnum;24use Jiminny\Contracts\ES\UpdateTargetEnum;25use PHPUnit\Framework\Attributes\CoversClass;25use PHPUnit\Framework\Attributes\CoversClass;@@ -31,6 +31,7 @@ class UpdateProcessManagerTest extends TestCase31{31{32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';32private const string BATCH_NAME = '9440de7a-1c0f-4541-a235-592f2117bb20';33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;33private const string UPDATE_TARGET = UpdateTarget::ACTIVITY;34+private const string ENVIRONMENT = 'testing';343535private array $normalPriority = [];36private array $normalPriority = [];36private array $highPriority = [];37private array $highPriority = [];@@ -40,6 +41,7 @@ class UpdateProcessManagerTest extends TestCase40private ?SimpleCollection $documentsToUpdate = null;41private ?SimpleCollection $documentsToUpdate = null;414242private BatchStatusManager|MockObject|null $batchStatusManager = null;43private BatchStatusManager|MockObject|null $batchStatusManager = null;44+private ReindexTargetStatsReporter|MockObject|null $statsReporter = null;43private Index|MockObject|null $targetIndex = null;45private Index|MockObject|null $targetIndex = null;444645private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;47private string|UpdateTargetEnum $updateTargetEntity = UpdateTarget::ACTIVITY;@@ -68,8 +70,13 @@ protected function setUp(): void68array_diff($allEntities, $deleteIds)70array_diff($allEntities, $deleteIds)69 );71 );707271-$this->prepareStatusManager();73+$this->statsReporter = $this->createMock(ReindexTargetStatsReporter::class);72-$this->prepareLogger();74+$this->statsReporter->expects($this->once())75+ ->method('setEnvironment')76+ ->with(self::ENVIRONMENT);77+$this->statsReporter->expects($this->once())78+ ->method('setUpdateTarget')79+ ->with(self::UPDATE_TARGET);73 }80 }748175/**82/**@@ -81,76 +88,75 @@ public function testRunUpdate(): void81// Also test that the trait works with entities and strings alike88// Also test that the trait works with entities and strings alike82$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;89$this->updateTargetEntity = UpdateTargetEnum::ACTIVITY;839084-$this->silenceDatadogAndRedisLock();91+ Log::shouldReceive('info')->withAnyArgs();92+ Log::shouldReceive('debug')->withAnyArgs();93+94+$this->statsReporter->expects($this->once())->method('report');95+96+$this->prepareStatusManager(1);859786$processor = $this->getProcessor();98$processor = $this->getProcessor();879988// There are exactly 250 chunks100// There are exactly 250 chunks89$this->assertTrue($processor->doUpdateEntitiesChunk());101$this->assertTrue($processor->doUpdateEntitiesChunk());102+90// But the second execution is on empty set103// But the second execution is on empty set91$this->assertFalse($processor->doUpdateEntitiesChunk());104$this->assertFalse($processor->doUpdateEntitiesChunk());92 }105 }9310694-/**107+public function testEmptySelectionLogsAndReturnsFalse(): void95- * When no Redis lock exists, logMemoryUsage should set the lock and emit a Datadog gauge96- * with the correct stat name, sample rate, and environment/type tags.97- */98-public function testLogMemoryUsageEmitsGaugeWhenLockIsAbsent(): void99 {108 {100-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);109+$batchStatusManager = $this->createMock(BatchStatusManager::class);101-110+$batchStatusManager->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);102- Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(null);111+$batchStatusManager->expects($this->never())->method('generateName');103- Redis::shouldReceive('set')->once()->with($gaugeLockKey, true);112+$batchStatusManager->expects($this->never())->method('scheduleWork');104- Redis::shouldReceive('expire')->once()->with($gaugeLockKey, 60);113+$batchStatusManager->expects($this->never())->method('finishWork');105-106- Datadog::shouldReceive('increment')->once()->withAnyArgs();107- Datadog::shouldReceive('gauge')108- ->once()109- ->with(110-'jiminny.reindex-memory-usage',111- \Mockery::type('int'),112-1,113- ['environment' => 'staging', 'type' => self::UPDATE_TARGET]114- );115-116-$processor = $this->getProcessor();117-$processor->setEnvironment('staging');118114119-$processor->doUpdateEntitiesChunk();115+$emptySelection = $this->createMock(SelectionList::class);120-}116+ $emptySelection->expects($this->once())->method('isEmpty')->willReturn(true);121117122-/**118+$entitySelector = $this->createMock(TargetEntitiesSelector::class);123- * When a Redis lock already exists, logMemoryUsage should return early119+$entitySelector->expects($this->once())->method('setUpdateTarget')->with(self::UPDATE_TARGET);124- * and not emit a Datadog gauge.120+$entitySelector->expects($this->once())->method('setBatchStatusManager')->with($batchStatusManager);125- */121+$entitySelector->expects($this->once())->method('select')->willReturn($emptySelection);126-public function testLogMemoryUsageSkipsGaugeWhenLockIsPresent(): void127- {128-$gaugeLockKey = sprintf('%s-process-manager-lock', self::UPDATE_TARGET);129122130-Redis::shouldReceive('get')->once()->with($gaugeLockKey)->andReturn(true);123+Log::shouldReceive('debug')131-Redis::shouldReceive('set')->never();124+ ->once()132-Redis::shouldReceive('expire')->never();125+ ->with('[ EsUpdateProcessManager ] Empty selection', ['update_target' => self::UPDATE_TARGET]);133126134- Datadog::shouldReceive('increment')->once()->withAnyArgs();127+$this->statsReporter->expects($this->never())->method('report');135- Datadog::shouldReceive('gauge')->never();136128137-$processor = $this->getProcessor();129+$processor = new UpdateProcessManager(138-$processor->setEnvironment('staging');130+ esClient: $this->getEsClientMock(),131+ entitySelector: $entitySelector,132+ batchStatusManager: $batchStatusManager,133+ deleteDocumentsAction: $this->createMock(DeleteDocumentsAction::class),134+ upsertDocumentsAction: $this->createMock(UpsertDocumentsAction::class),135+ loadDocumentsAction: $this->createMock(LoadDocumentsAction::class),136+ statsReporter: $this->statsReporter,137+ );138+$processor->setEnvironment(self::ENVIRONMENT);139+$processor->setUpdateTarget(self::UPDATE_TARGET);140+$processor->bootstrap();139141140-$processor->doUpdateEntitiesChunk();142+$this->assertFalse($processor->doUpdateEntitiesChunk());141 }143 }142144143public function testRunDoUpdateButThrottled(): void145public function testRunDoUpdateButThrottled(): void144 {146 {145$this->isThrottled = true;147$this->isThrottled = true;146148147-$this->silenceDatadogAndRedisLock();149+ Log::shouldReceive('info')->withAnyArgs();150+151+$this->statsReporter->expects($this->once())->method('report');148152149// Reschedule High priority153// Reschedule High priority150 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);154 Redis::shouldReceive('saddarray')->with('activities-for-update-priority', $this->highPriority);151// Reschedule low priority155// Reschedule low priority152 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);156 Redis::shouldReceive('saddarray')->with('activities-for-update', $this->normalPriority);153157158+$this->prepareStatusManager(1);159+154$processor = $this->getProcessor();160$processor = $this->getProcessor();155161156$this->assertTrue($processor->doUpdateEntitiesChunk());162$this->assertTrue($processor->doUpdateEntitiesChunk());@@ -165,10 +171,11 @@ private function getProcessor(): UpdateProcessManager165 deleteDocumentsAction: $this->getDeleteActionMock(),171 deleteDocumentsAction: $this->getDeleteActionMock(),166 upsertDocumentsAction: $this->getUpsertActionMock(),172 upsertDocumentsAction: $this->getUpsertActionMock(),167 loadDocumentsAction: $this->getLoadDocumentsMock(),173 loadDocumentsAction: $this->getLoadDocumentsMock(),174+ statsReporter: $this->statsReporter,168 );175 );169176170$updateProcessor->setUpdateTarget($this->updateTargetEntity);177$updateProcessor->setUpdateTarget($this->updateTargetEntity);171-$updateProcessor->setEnvironment('test-env');178+$updateProcessor->setEnvironment(self::ENVIRONMENT);172179173$updateProcessor->bootstrap();180$updateProcessor->bootstrap();174181@@ -195,23 +202,6 @@ private function getEsClientMock(): Client|MockObject195return $clientMock;202return $clientMock;196 }203 }197204198-private function prepareLogger(): void199- {200- Log::shouldReceive('info')201- ->atLeast()202- ->once()203- ->with('[ EsUpdateProcessManager ] Finished updating entities in ES', $this->anything());204- }205-206-private function silenceDatadogAndRedisLock(): void207- {208- Datadog::shouldReceive('increment')->atLeast()->once()->withAnyArgs();209- Datadog::shouldReceive('gauge')->withAnyArgs();210- Redis::shouldReceive('get')->withAnyArgs()->andReturn(null);211- Redis::shouldReceive('set')->withAnyArgs();212- Redis::shouldReceive('expire')->withAnyArgs();213- }214-215private function getDeleteActionMock(): DeleteDocumentsAction|MockObject205private function getDeleteActionMock(): DeleteDocumentsAction|MockObject216 {206 {217$deleteAction = $this->createMock(DeleteDocumentsAction::class);207$deleteAction = $this->createMock(DeleteDocumentsAction::class);@@ -320,26 +310,30 @@ private function mockSelection(): SelectionList|MockObject320return $selectionList;310return $selectionList;321 }311 }322312323-private function prepareStatusManager(): void313+private function prepareStatusManager(int $invokeTimes = 0): void324 {314 {325$batchStatusManager = $this->createMock(BatchStatusManager::class);315$batchStatusManager = $this->createMock(BatchStatusManager::class);326316327-$batchStatusManager->expects($this->atLeastOnce())317+if ($invokeTimes) {318+$batchStatusManager->expects($this->once())319+ ->method('setUpdateTarget')320+ ->with(self::UPDATE_TARGET);321+ } else {322+$batchStatusManager->expects($this->never())->method('setUpdateTarget');323+ }324+325+$batchStatusManager->expects($this->exactly($invokeTimes))328 ->method('generateName')326 ->method('generateName')329 ->willReturn(self::BATCH_NAME);327 ->willReturn(self::BATCH_NAME);330328331-$batchStatusManager->expects($this->atLeastOnce())329+$batchStatusManager->expects($this->exactly($invokeTimes))332- ->method('setUpdateTarget')333- ->with(self::UPDATE_TARGET);334-335-$batchStatusManager->expects($this->atLeastOnce())336 ->method('scheduleWork')330 ->method('scheduleWork')337 ->with(331 ->with(338array_merge($this->highPriority, $this->normalPriority),332array_merge($this->highPriority, $this->normalPriority),339self::BATCH_NAME333self::BATCH_NAME340 );334 );341335342-$batchStatusManager->expects($this->atLeastOnce())336+$batchStatusManager->expects($this->exactly($invokeTimes))343 ->method('finishWork')337 ->method('finishWork')344 ->with(self::BATCH_NAME);338 ->with(self::BATCH_NAME);345339</selection>” selected.
Please summarize the selection using precise and concise language. Use headers and bulleted lists in the summary, to make it scannable. Maintain the meaning and factual accuracy.
Expand
Copy prompt...
|
83928
|
NULL
|
NULL
|
NULL
|